本文参考自九大排序算法之插入排序(原理及实现)
算法思路:每趟将一个待排序的元素,按照关键字值得大小,插入已经排好序部分的适当位置,直到所有元素排序完成
实例:
原始序列:49、38、65、97、76、13、27、49
第一趟,将49看成已经排好序的部分,即49是有序的,那么第一趟排序的结果就是:
有序:{49}
无序:{38,65,97,76,13,27,49}
第二趟,插入38,那么第二趟排序的结果就是:
有序:{38,49}
无序:{65,97,76,13,27,49}
第三趟,插入65,那么第三趟排序的结果就是:
有序:{38,49, 65}
无序:{97,76,13,27,49}
第四趟,插入97,那么第四趟排序的结果就是:
有序:{38,49, 65, 97}
无序:{76,13,27,49}
第五趟,插入76,那么第五趟排序的结果就是:
有序:{38,49, 65,76, 97}
无序:{13,27,49}
第六趟,插入13,那么第六趟排序的结果就是:
有序:{13,38,49, 65,76, 97}
无序:{27,49}
第七趟,插入27,那么第二趟排序的结果就是:
有序:{13,27,38,49, 65,76, 97}
无序:{49}
第八趟,插入49,那么第二趟排序的结果就是:
有序:{13,27,38,49,49, 65,76, 97}
无序:{}
public int[] insertionSort(int[] arr){
if(arr == null || arr.length = 0){
return arr;
}
int temp = 0;
int length = arr.length;
for(int i = 1; i < length; i++){
temp = arr[i];
for(int j = i; j > 0 && arr[j] > temp; j--){
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
return arr;
}