1.插入排序的概述
插入排序介绍
插入式排序属于内部排序算法,是对于欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。.
插入排序思想
把n个待排序的元素看成为一个有序表和无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序列表中的适当位置,使之成为新的有序表。
2.插入排序图解
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;
}
新手上路请多指教!