算法基本思想:
插入排序(Insertion Sort)算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。
排序流程:
- 首先对数组的前两个数据进行从小到大排序
- 然后将第三个数据与前面排好的数据进行比较,把第三个数插入合适的位置
- 然后将第四个数据插入到前三个数据中
- 重复此步骤,直到最后一个数插入合适的位置为止,到此排序完成
代码实现
import java.util.Arrays;
public class InsertionSort {
public static void sort(int[] arr) {
int len = arr.length;
int tmp;//要插入的数据
int istIndex;//插入位置索引
System.out.println("原始顺序: " + Arrays.toString(arr));
for (int i = 1; i < len; i++) {
if (arr[i] < arr[i - 1]) {
tmp = arr[i];
istIndex = i;
while (istIndex > 0 && arr[istIndex-1] > tmp) {
//插入位置往前移,寻找合适位置
arr[istIndex] = arr[istIndex - 1];
istIndex--;
}
arr[istIndex] = tmp;
}
System.out.println("第" + i + "趟排序:" + Arrays.toString(arr));
}
}
public static void main(String[] args) {
int[] arr = new int[10];
//初始化数组
for (int i = 0; i < 10; i++) {
arr[i] = (int) (Math.random() * (100 + 1));
}
InsertionSort.sort(arr);
}
}