3分钟读懂插入排序
1.算法原理
遍历序列中的每一个元素,每次从序列中取出一个元素,按照它的大小插入到已经排序好的目标序列中(如果是第一个元素,默认为已排序列,从第二个元素开始比较插入);依次重复,直到遍历完成,此时完成排序.
注意:待排序列元素从后往前扫描有序序列.
2.案例分析
将数组arr = {4,3,8,7,6}按从小到大排序
步骤:
1.将数组中的第一个元素看做有序序列,把第二个元素到最后一个元素当成未排序序列;
2.从头到尾遍历未排序的序列,将遍历的每个元素插入到有序序列的合适位置(如果有序序列中有元素与待插入的元素相等,则将待插入的元素插入到此元素后面)
图片示例:
代码实现:
public static void main(String[] args) {
//插入排序
//创建int类型的数组,放入几组数据进行排序
int[] arr = {4,3,8,7,6};
int insertNum;
// 排序
for (int i = 1; i < arr.length; i++) { //遍历未排序元素
insertNum = arr[i];//待插入元素
int j = i-1; //arr[j]之前为有序序列
while(j>=0&&arr[j]>insertNum){ //待插入元素从后往前与有序序列比较
arr[j+1] = arr[j];
j--;
}
arr[j+1] = insertNum; //插入元素
}
System.out.println(Arrays.toString(arr));
}
out.println(Arrays.toString(arr));
}