基础算法之插入排序
2016-07-02 13:44
316 查看
一、前言(算法实现将采用Java语言)
算法对于程序员来说还是非常重要的,在我们平常的面试中, 算法题目都是必不可少的, 算法可以说是入职的门槛, 也是面试的加分利器。要知道, 在大公司中, 你的学历可以达不到标准, 只要你的基础扎实, 算法逻辑够清晰, 一般都会破格录用你的。
算法将会分为几篇文章, 大概是一星期一章, 也是很久没更新博客了, 准备给大家分享些即实用面试又能加分的博文出来。
在学习算法的过程中, 不要有太大的压力, 每个算法都有对应的逻辑, 只要理解的他的工作原理, 代码其实就只是体现的一种方式罢了。
若觉得逻辑不够清晰, 请在评论中随便践踏我!!!
二、特性
将一个记录插入到一个已排序的队列当中, 使整个序列在插入之后, 任然有序;插入位置的确定方法是将待插入的数据与已区分中各记录的值进行比较;
三、实现方法
假如我们现在有一个数组 'numbers' ;int numbers[] = new int[]{2,4,8,1,0,9,6} ;
我们现在需要将数组中的数据以从小到大的方式进行排序;
逻辑思路: 在排序中, 我们需要以数组下标为1的数值, 依次向前面的数据进行比较, 直到【当前下标处-1】的位置数据小于【当前下标处】的数据。
那么, 我们的逻辑就已经完成。
插入排序算法较为简单, 以上就是他的工作原理步骤:
public static void main(String[] strs) { int[] numbers = new int[] { 2, 8, 1, 3, 6, 9, 0 }; for (int i = 1; i < numbers.length; i++) { int j = i; while (j > 0 && numbers[j] < numbers[j - 1]) { int temp = numbers[j]; numbers[j] = numbers[j - 1]; numbers[j - 1] = temp; j--; } } for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i]+" "); } }
四、源代码解释
我们进行了第一层for循环 , 目的是为了保证该数组的每一处下标对应的数据都能够被当前算法给作用到。j变量是为了能够处理 若前面的几处变量都形成条件时做的下标数值比较。 因为不能够直接操作i变量, 所以通过j来实现依次向前比较。
第二层while循环是用来两个下标的数据进行替换的逻辑处理。
j--; 的功能就是j变量的处理效果了。
while来表达的是, 如果前一处下标已经大于当前操作的下标数据了, 那么将自动退出, 证明该序列已经正确。 进行下一个i下标数据比较。
相关文章推荐
- 剑指Offer算法题JAVA版4-12题(全是个人写的非官方,只供参考和自己复习,测试用例都通过了)
- 秒懂github的pull request
- iTunes历史各个版本下载地址
- Netty系列之Netty高性能之道
- NOIP提高组2015 飞扬的小鸟
- 高像素摄像头的最好搭档:1.5A Flash Led Driver SGM3780
- iOS中的单例模式
- Docker镜像保存为文件及从文件导入镜像
- sql执行顺序
- test
- 线程通信实现输出数字以及对应字母
- 【看图说话系列】进程与线程的一个简单解释
- Markdown入门笔记
- 编写一个程序实现链串的各项基本运算
- Python字典
- Ajax原理和封装
- 安装GitStack时,80端口被System服务占用问题
- Ansible playbook lookups 和 conditionals
- 228. Summary Ranges && 163 Missing Ranges && 352. Data Stream as Disjoint Intervals
- windows下安装linux/ubantu