一、直接插入排序算法
(1)直接插入排序(Insertion Sort)的基本思想是:是将一个记录插入到已经排好的有序记录中,从而得到一个新的、记录增加1的有序序列。
(2)代码实现:
//直接插入排序
public static void straightInsertSort(List<Integer> list){
int i,j;
for(i=1;i<list.size();i++){
if(list.get(i-1)>list.get(i)){
int temp = list.get(i);
for (j = i-1; j >=0&& list.get(j)>temp; j--) {
int aa = list.set(j+1, list.get(j)); //向后移一位
}
list.set(j+1, temp); //插入到正确的位置
}
}
for (int k = 0; k < list.size(); k++) {
System.out.println(list.get(k));
}
}
(3)小结:最好情况顺序时不需要移动,时间复杂度为O(n)。最坏情况逆序时,比较(n+2)(n-1)/2次,移动(n+4)(n-1)/2,平均比较和移动n²/4次时间复杂度:时间复杂度为 O(n²)。直接插入排序的性能要高于冒泡排序和简单选择排序。