1. 啥是插入排序呢?
在原来的乱序数组中,将每一个数字依次插入到其应该在的位置,形成一个新的数组。
2.插入排序思路
以下步骤均以乱序数组 arr 为例从小到大排列:
int[] arr = {5, 8, -7, 4, 6, -9, 3, -1, 2,-65};
回到定义中:
将每一个数字依次插入到其应该在的位置
因此,我们可以假想成有两个数组,一个是旧的,没排过序的,而另一个数组则是已经排好序的。我们要从“旧的数组”中依次取数字放到“新数组”中。
首先,我们要从第二位开始取元素(可以这么想:因为第一位已经为新数组中的一员了):
for (int i = 1; i < array.length - 1; i++) {
}
接着,在第二位之后的内容进入“新数组”后要进行排序
若从新数组第0位开始排序的话比较麻烦,因此选择从新内容那位开始倒着和“新数组”前的内容进行排序:
for (int j = i; j >= 0; j--) {
if (array[j] > array[j + 1]) {
int b = array[j];
array[j] = array[j + 1];
array[j + 1] = b;
}
}
3.输出语句:
for (int p = 0; p < array.length; p++) {
System.out.print(array[p] + " ");
}
插入排序方法全部代码:
public void Insertion_sort(int[] array) {
System.out.println();
System.out.print("插入排序: ");
for (int i = 1; i < array.length - 1; i++) {
for (int j = i; j >= 0; j--) {
if (array[j] > array[j + 1]) {
int b = array[j];
array[j] = array[j + 1];
array[j + 1] = b;
}
}
}
for (int p = 0; p < array.length; p++) {
System.out.print(array[p] + " ");
}
}