1、插入排序基础
插入排序和选择排序有一个异曲同工的地方在于他们都存在一个:在原数组上创建子数组的思想,这两种排序方法都会将原数组分为两个部分:待排序数组与已排好序的数组,但是这两种算法的内核思想却截然不同,同时插入排序是希尔排序的基础
下面使用图像来更加直观地体现出快速排序的操作
例如对这个数组进行排序(红色区域为已排序元素)
以元素5排序为例:
与前面一个元素对比,小于,将20赋给5所在位置(若是大于,直接在该索引+1位置插入)
再与前面一个元素相比,依次类推
直到没有元素可比(位置遍历到-1)插入元素
代码如下
public class InsertSort {
public static void main(String[] args) {
int[] arrs = {20, 10, 5, 50, 1};
insertSort(arrs);
for (int i : arrs) {
System.out.print(i + " ");
}
}
public static void insertSort(int[] arrs) {
int l = arrs.length;//确定长度
for (int i = 1; i < l; i++) {//i表示已经排好的元素个数
int temp = arrs[i];
int j = i - 1;//代表temp在已排序数组中的相对的位置
while (j >= 0 && arrs[j] > temp) {
arrs[j + 1] = arrs[j];
j--;
}
arrs[j + 1] = temp;
}
}
}
如有错误请批评指正