直接插入排序:
算法原理:
在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
复杂度:
时间复杂度 O(n2) ,空间复杂度O(1)
稳定性:
插入排序是稳定的,排序前后两个相等元素相对次序不变(能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。)
算法java实现:
public void zjInsert(int[] arr){
for(int i=1;i<arr.length;i++){
int j,temp;
j=i-1;
temp=arr[i];
while(j>=0&&arr[j]>temp){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=temp;
}
}