有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法
简单来说,就是将数组中的第一个元素看成有序数组,然后将第二个插入其中使之任然保持有序,再将第三个插入使之依旧保持有序
一步一步实现代码
package com.jingfei.paixu;
import java.util.Arrays;
public class Demo3 {
public static void main(String[] args) {
//插入排序
int[] arr = {10, 2, 0, -5, -10};
//初始有序队列有一个元素{10}
//元素arr[1]进入队列,使之任有序,就需要和当前队列的所有元素比较
int j = 1;
while (j > 0 && arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
//元素arr[1]进入队列,使之任有序,就需要和当前队列的所有元素比较
j = 2;
while (j > 0 && arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
//元素arr[1]进入队列,使之任有序,就需要和当前队列的所有元素比较
j = 3;
while (j > 0 && arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
//元素arr[1]进入队列,使之任有序,就需要和当前队列的所有元素比较
j = 4;
while (j > 0 && arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
System.out.println(Arrays.toString(arr));
}
}
循环插入有序队列,使之任有序
package com.jingfei.paixu;
import java.util.Arrays;
public class Demo3 {
public static void main(String[] args) {
//插入排序
int[] arr = {10, 2, 0, -5, -10};
//初始有序队列有一个元素{10}
//元素arr[1]进入队列,使之任有序,就需要和当前队列的所有元素比较
for (int i = 0; i < arr.length; i++) {
int j = i;
while (j > 0 && arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
}
System.out.println(Arrays.toString(arr));
}
}
[-10, -5, 0, 2, 10]
Process finished with exit code 0
谢谢!