1.插入排序算法
插入排序算法的时间复杂度为O(N)
插入排序算法规则:
1.后面一个数和前面的数相比
2.如果比他大,位置交换,再和前面一个数比较,依次比较
3.最好插入到合适的位置(合适的位置,前面的数都比我小,后面的数都比我大)
下面程序解读:第一轮,第1个数和第2个数比较,排序后较小的在第1位,较大的在第2位。
第二轮,第3个数和前面两个数比较,如果第3个数比第2个数大,那比较结束,因为前两个数已经是有序的了
如果第3个数比第2个数小,第2个数占据第3个数的位置,这个数在和第一个数比较。依次比较,得到有序
Java代码示例
/**
* 插入排序
* 时间复杂度O(N)
* 局部有序的话特别快
* @param list
*/
public static void insertionSort(List<Integer> list){
for (int out=1;out<list.size();out++){
int temp = list.get(out);
int in = out;
while (in>0&&list.get(in-1)>temp){
list.set(in,list.get(in-1));
--in;
}
list.set(in,temp);
}
}
代码下载地址:https://gitee.com/timezxp/algorithmic
参考书籍:https://www.javabbs.club/bbs/bbs/topic/86-1.html
至此,感谢!
欢迎添加关注!