1.插入排序的概述
插入排序介紹
插入式排序屬于內部排序算法,是對于欲排序的元素以插入的方式尋找該元素的適當位置,以達到排序的目的。.
插入排序思想
把n個待排序的元素看成為一個有序表和無序表,開始時有序表中只包含一個元素,無序表中包含n-1個元素,排序過程中每次從無序表中取出第一個元素,把它的排序碼依次與有序表元素的排序碼進行比較,將它插入到有序列表中的適當位置,使之成為新的有序表。
2.插入排序圖解
image.png
3.算法實現
思路:
(1)初始狀態下數組第一個元素插入到有序表,其他的作為無序表中的元素。
(2)每次將無序表中的第一個元素插入到有序表中合適的位置。
public static int[] insertSortAsc(int a[]){
//記錄待插入數的值
int insertValue;
//記錄待比較數組的索引
int insertIndex;
//對于一個長度為n的數組,需要插入n-1次
for (int i = 0; i < a.length-1; i++) {
insertValue = a[i+1];
insertIndex = i;
//insertIndex>0保證數組不越界,即當插入的數值比索引為0的數字還小時不在繼續向前查找直接插入。
// insertIndex<a[insertIndex]用于判斷是否找到合適的插入位置
while (insertIndex>=0&&insertValue<a[insertIndex]){
//當前數值比待插入的數小,將該數字后移。反之則退出循環。
a[insertIndex+1] = a[insertIndex];
//修改要比較數組的索引
insertIndex--;
}
//結束循環時說明找到了插入位置
a[insertIndex+1] = insertValue;
}
return a;
}
新手上路請多指教!