直接插入排序

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.util.Arrays;

public class MyTest {
public static void main(String[] args) {
//直接插入排序
//算法思想

/*直接插入排序, 是一种最简单的排序方法.他的基本操作是将一个记录插入到一个长度为m 的有序表中, 使之仍保持有序, 从而得到一个新的长度为m + 1 的有序列表.假设有一组元素 { k1, k2...,kn },
排序开始就认为k1是一个有序序列, 让k2插入上述表长为1的有序序列, 使之成为一个表长为2的有序序列, 然后让k3插入上述表长为2的有序序列, 使之成为一个表长为3的有序序列, 以此类推, 最后让kn插入表长为n - 1
的有序序列, 得到一个表长为n的有序序列.
例如:
49, 38, 65, 97, 76, 13, 27 原始数据
[49], 38, 65, 97, 76, 13, 27 从1索引开始插入
[38, 49], ,65, 97, 76, 13, 27
[38, 49, 65]97, 76, 13, 27
[38, 49, 65, 97]76, 13, 27
[38, 49, 65, 76, 97]13, 27
[13, 27, 38, 49, 65, 76, 97],27
[13, 27, 38, 49, 65, 76, 97]*/
//代码实现

int[] arr={10,-1,1,1,3,5,6,9,0,100,3,-9,1000};
//外层循环定义轮次
//[10]
for (int i =1; i < arr.length; i++) {
int j=i;
//往之前的有序列表中插入元素,插入完之后,使之仍保持有序
while (j>0&&arr[j]<arr[j-1]){//当前元素arr[i] 跟我前面一个元素去比 arr[i-1]
int t=arr[j];
arr[j]=arr[j-1];
arr[j-1]=t;
j--;
}

}

System.out.println(Arrays.toString(arr));
//插入排序,还有很多优化的变种,比如希尔排序,就是对插入排序的优化排法




}
}
-------------本文结束感谢您的阅读-------------
0%