1.插入排序的算法
每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
类似与斗地主发牌后的排序,按照从大到小或者从小到大的顺序排序出来
2.图解插入排序
3.插入排序思路
步骤:
从第一个元素开始,该元素可以认为已经被排序
取出下一个元素,在已经排序的元素序列中从后向前扫描
如果被扫描的元素(已排序)大于新元素,将该元素后移一位
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
将新元素插入到该位置后
重复步骤2~5
4.代码实现
public static int[] INSERTION_SORT(int[] ints){
//所有参与排序的数组的索引范围,为什么从1开始呢,因为可以把0号位置的数据当成已经排序好的
for (int i = 1; i < ints.length; i++) {
//一直到排到的第i个位置结束,进行倒着比较
for (int j = i; j >0 ; j--) {
//比较,如果符合要求则交换位置
if(ints[j] < ints[j-1]){
int temp = ints[j];
ints[j]=ints[j-1];
ints[j-1]=temp;
}else {
//遇到不符合要求的数据则停止,代表前面都是最小或者最大的了
break;
}
}
}
return ints;
}
public static void main(String[] args) {
System.out.println(Arrays.toString(INSERTION_SORT(new int[]{2,5,4,7,6,1,3})));
}