不停的往一个数组中添加数字(新来的数字),数组有序,新数字进入数组后会和右边判断大小,比他小则往左移一位,移后再进行判断,知道新来的数字 >= 左边的数字停止判断,数组再次有序
数组为 147 **有序**
添加一个数字 2
2 < 7,和7交换位置 1427
2 < 4,和4交换位置 1247
2 > 1,停止交换的判断 数组为 1247 **数组再次有序**
添加一个新数字 5 此时数组为 1247 **有序**
5 < 7,和7 交换位置 12457
5 > 4,停止交换的判断 数组为12457 **再次有序**
代码:
InsertionSort.java
package cn.Text;
public class InsertionSort {
public static void insertsort(int[] arr) {
if (arr==null || arr.length<2){
return;
}
//0~0有序 0~1有序 0~2有序 0~3有序 ... 0~n-1 有序 索引
for (int i = 1; i < arr.length; i++) {
while(i-1>=0 && arr[i-1]>arr[i]){
Swap(arr,i-1,i);
i--;
}
}
// for (int i = 1; i < arr.length; i++) {
// int CurrentNumberIndex=i;
// while(CurrentNumberIndex-1>=0 && arr[CurrentNumberIndex-1]>arr[CurrentNumberIndex]){
// Swap(arr,CurrentNumberIndex-1,CurrentNumberIndex);
// CurrentNumberIndex--;
// }
// }
}
public static void Swap(int [] arr ,int i,int j){
int tmp=arr[j];
arr[j]=arr[i];
arr[i]=tmp;
}
public static void PrintArray(int [] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr={
5,9,13,22,4,56,3};
PrintArray(arr);
insertsort(arr);
PrintArray(arr);
}
}
代码来源于B站,侵权请联系删除