一、插入排序的基本思想
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到 一个新的有序序列 。实际中我们玩扑克牌时,就用了插入排序的思想。![]()
二、图解思想
那我们按照这个思想来画图理解一下:
就这样循环往复直到,i 超出范围
三、代码实现
升序:
public static void insertSort(int[] array) { //i从1下标开始 for (int i = 1; i < array.length; i++) { //将i下标的值放入tmp中,防止被覆盖 int tmp = array[i]; int j = i-1; for (; j >= 0; j--) { //tmp不是当前最大的值,将j下标的往后移 if(array[j] > tmp) { array[j+1] = array[j]; }else {//j下标之前的元素都比tmp小了 //将tmp的值放入j+1处(但是也可以省略,因为后面处理j<0的时候,也会赋值) // array[j+1] = tmp; break; } } //走到这里说明,j<0了 array[j+1] = tmp; } }
结果:
降序:
public static void insertSort(int[] array) { for (int i = 1; i < array.length; i++) { int tmp = array[i]; int j = i-1; for (; j >= 0; j--) { // 这里改一下就ok了 if(array[j] < tmp) { array[j+1] = array[j]; }else { break; } } array[j+1] = tmp; } }
结果: