说明:本代码由b站网友:万众烟火不及你 编写
仅供学习参考,转载请标明出处
代码难免存在bug,请网友海涵,以下为代码部分
InsertSort.java :
package InsertSort;
//插入排序
public class InsertSort {
public static void main(String[] args) {
int[] a = {10,8,11,7,4,12,9,6,5,3};
System.out.print("排序前的数组:");
printArray(a);
System.out.print("排序后的数组:");
printArray(insertionSort(a));
}
static int[] insertionSort(int[] arr){
int n = arr.length;
for (int i = 1; i < n; i++){ //为什么从1开始?因为第0个元素本身就是有序的
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key){ //前一个数大于后一个数,则交换
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
return arr;
}
//打印数组
static void printArray(int[] arr){
for (int j : arr) {
System.out.print(j + " ");
}
System.out.println();
}
}
测试用例:
-----以下为输出-----
排序前的数组:10 8 11 7 4 12 9 6 5 3
排序后的数组:3 4 5 6 7 8 9 10 11 12