avatar

插入排序

插入排序

什么是插入排序?
通俗理解就是,把n个待排序的元素看成一个有序表和无序表,有序表最开始为1,无序表为n-1,
每进行一轮排序,从无序表中取出第一个元素,将其与有序表元素进行比较,将其放入一个合适的位置。
最后形成的一个完整有序表。

时间复杂度:O(n^2)
稳定度:稳定

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 public static void insertSort2(int[] arr) {
int value;//从无序表中取出来要进行插入的值
int index;//被插入的索引位置
for (int i = 1; i < arr.length; i++) {
//打印
System.out.println("第" + (i - 1) + "轮" + Arrays.toString(arr));
//取出插入值
value = arr[i];
//index设置为value的初始位置
index = i;
//index必须 >= 1 防止溢出,与index的前一个元素进行比较
while (index >= 1 && value < arr[index - 1]) {
//元素后移一位
arr[index] = arr[index - 1];
index--;
}
//insertIndex变化则进行插入
if (index != i) {
arr[index] = value;
}
}
}

@Test
public void insertSort2Test() {
//随便测试
int[] arr = {101, 34, 119, 1, -1, 98,3,5,323,125,743};
insertSort2(arr);
}

测试结果
在这里插入图片描述

文章作者: Hobo
文章链接: https://hobo-clh.github.io/2020/06/10/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hobo's blog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论