数组排序——插入排序
1、数组排序之插入排序
原理:将n个元素的数列分为已有序和无序两个部分,如插入排序过程示例下所示:
{{a1},{a2,a3,a4,…,an}}
{{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}
{{a1(n-1),a2(n-1) ,…},{an(n-1)}}
每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
2、代码演示:
package cn.itcast_01;
public class ArraySort_insertSort {
public static void main(String[] args) {
// 定义一个数组
int[] arr = { 24, 69, 80, 57, 13, 80, 57, 22225, 0, -26 };
// int[] arr = { 24, 24, -3 };
// int[] arr = { 24 };
// int[] arr = {};
System.out.println("排序前:");
printArray(arr);
// 调用插入排序算法
insertSort(arr);
System.out.println("排序后:");
printArray(arr);
}
// 插入排序
public static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if (arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
}
// 数组遍历
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + ", ");
}
}
System.out.println("]");
}
}