直接插入排序的基本思想是循环一个数组,将当前下标插入到下标之前已排好序的数组部分,循环结束,插入结束,则数组排序完毕。
java实现
/**
* 测试插入排序
*/
@Test
public void testInsertSort() {
int[] array = { 1, 33, 23, 5, 21, 14, 64, 125, 3 };
inserSort(array);
System.out.print("排序结束后:");
printArray(array);
}
/**
* 插入排序法
*/
public void inserSort(int[] array) {
// 健壮性判断
if (array.length < 2) {
return;
}
// 循环数组
for (int i = 0; i < array.length; i++) {
int temp = array[i];
int j = i;
// 遍历当前下标前的数组部分,如果当前下标值小于当前下标前的数组值,则数组值后移
while (j > 0 && temp < array[j - 1]) {
array[j] = array[j - 1];
j--;
}
// 遍历结束后,将元素插入结束下标的位置
array[j] = temp;
// 打印数组,观察排序过程
System.out.print("第" + i + "次排序后:");
printArray(array);
System.out.println();
}
}
/**
* 打印数组
*/
public void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + "\t");
}
}