插入排序-直接插入排序
2017-09-06 16:13
253 查看
1、概念
直接插入排序:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。2、算法
public static void insertSort(int[] arr) { int length = arr.length; int j, temp; //对整个数组进行检查 for (int i = 1; i < length; i++) { temp = arr[i]; j = i - 1; //当前数与之前已排序数比较,如果小则向前移位查找 while (j >= 0 && temp < arr[j]) { arr[j + 1] = arr[j]; j--; } //找到位置并插入 arr[j + 1] = temp; //输出结果过程 System.out.print(i + "times: "); for (int k = 0; k < length; k++) { System.out.print(arr[k] + " "); } System.out.println(); } }
结果:
source: 8 3 6 5 9 4 10 7 1 2 1times: 3 8 6 5 9 4 10 7 1 2 2times: 3 6 8 5 9 4 10 7 1 2 3times: 3 5 6 8 9 4 10 7 1 2 4times: 3 5 6 8 9 4 10 7 1 2 5times: 3 4 5 6 8 9 10 7 1 2 6times: 3 4 5 6 8 9 10 7 1 2 7times: 3 4 5 6 7 8 9 10 1 2 8times: 1 3 4 5 6 7 8 9 10 2 9times: 1 2 3 4 5 6 7 8 9 10
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的,其时间复杂度O(n^2)。
相关文章推荐
- 数据结构图文解析之:直接插入排序及其优化(二分插入排序)解析及C++实现
- 插入排序(1)——直接插入排序(insert sort)
- 数据结构-插入排序-直接插入排序
- C++代码,数据结构-内部排序-插入排序-直接插入排序
- java实现排序算法之2-路插入排序,直接插入排序,折半插入排序
- 插入排序:直接插入排序和希尔排序
- 【排序】插入排序(直接插入排序、希尔排序)
- java排序之插入排序(直接插入排序和希尔排序)
- 插入排序(直接插入排序,折半插入排序,2路插入排序,希尔排序)
- 排序算法(二)、插入排序 —— 直接插入排序 和 希尔排序
- 插入排序:直接插入排序
- 排序>>>插入排序>>>直接插入排序
- java数据结构之插入排序(直接插入排序、折半插入排序、希尔排序)
- 排序算法之直接插入排序、二分插入排序和希尔排序
- Java使用二分插入排序竟然和直接插入排序速度相差不多
- 算法与数据结构(四)--插入排序(直接插入排序)
- 各种排序算法汇总(插入排序:直接插入排序、折半插入排序、希尔排序)
- 插入排序—直接插入排序(Straight Insertion Sort)
- 关于插入排序 直接插入排序和希尔排序