3.插入排序
(1)基本思想:
插入排序是将n个待排元素的序列看成两个表,分别为有序表和无序表。起初,有序表中只有一个元素,即下标为0的元素;无序表中含有 n-1个元素,即下标从1到n-1的元素。排序过程就是每次将无序表中的第一个元素拿出,然后依次与有序表中的元素进行比较,找到合适的位置,将其插入,直到无序表中没有元素。
(2)插入排序示意图:
图解过程:
a.共进行 arr.length-1 轮的排序(因为是从下标为1的元素开始作为无序表的)
b.从无序表中拿第一个元素
c.在有序表中找合适的位置
d.将其插入
(3)代码实现:
public void insertSort(int arr[]) {
for(int i = 1;i < arr.length;i++) {
//把无序表中的第一个元素拿出来
int value = arr[i];
int index = i - 1;
//开始在有序表中找合适的位置
while(index >= 0 && value < arr[index]) {
arr[index + 1] = arr[index]; //数组元素后移
index--;
}
//找到合适的位置,插入
arr[index + 1] = value;
}
}
注:冒泡和选择排序请转 常见的排序算法——选择排序_小何小何h的博客-优快云博客