【1】算法思想:
直接插入排序是一种最简单的排序方法,其基本操作是将一个记录插入到一个长度为米的有序表中,使之仍保持有序,从而得到一个新的长度为m + 1个的有序列表。
假设有一组元素{K1,K2 ...,KN },排序开始就认为K1 是一个有序序列,让K2 插入上述表长为1 的有序序列,使之成为一个表长为2 的有序序列,然后让K3 插入上述表长为2 的有序序列,使之成为一个表长为3 的有序序列,以此类推,最后让KN 插入表长为n-1个的有序序列,得到一个表长为ň 的有序序列
【2】
4 | 23 | 2 | 五 | 89 | 43 | 67 | 34 | 61 | 22 | 90 |
4 | 2 | 23 | 五 | 89 | 43 | 67 | 34 | 61 | 22 | 90 |
2 | 4 | 23 | 五 | 89 | 43 | 67 | 34 | 61 | 22 | 90 |
2 | 4 | 五 | 23 | 89 | 43 | 67 | 34 | 61 | 22 | 90 |
2 | 4 | 五 | 23 | 43 | 89 | 67 | 34 | 61 | 22 | 90 |
2 | 4 | 五 | 23 | 43 | 67 | 89 | 34 | 61 | 22 | 90 |
2 | 4 | 五 | 23 | 43 | 67 | 34 | 89 | 61 | 22 | 90 |
2 | 4 | 五 | 23 | 43 | 34 | 67 | 89 | 61 | 22 | 90 |
2 | 4 | 五 | 23 | 34 | 43 | 67 | 89 | 61 | 22 | 90 |
2 | 4 | 五 | 23 | 34 | 43 | 67 | 61 | 89 | 22 | 90 |
2 | 4 | 五 | 23 | 34 | 43 | 61 | 67 | 89 | 22 | 90 |
2 | 4 | 五 | 23 | 34 | 43 | 61 | 67 | 22 | 89 | 90 |
2 | 4 | 五 | 23 | 34 | 43 | 61 | 22 | 67 | 89 | 90 |
2 | 4 | 五 | 23 | 34 | 43 | 22 | 61 | 67 | 89 | 90 |
2 | 4 | 五 | 23 | 34 | 22 | 43 | 61 | 67 | 89 | 90 |
2 | 4 | 五 | 23 | 22 | 34 | 43 | 61 | 67 | 89 | 90 |
2 | 4 | 五 | 22 | 23 | 34 | 43 | 61 | 67 | 89 | 90 |
上面我已经列出来了插入排序它全部过程中需要进行比较移位的过程
从第二个元素开始一直和前面有序的数组元素值相比较插入到合适的位置保证构成的新的数组有序
其中红色代表的是这次比较的过程中需要交换的两个元素值
【3】源码
public class Insertsort {
public static void main(String[] args) {
int[] arr={23,4,2,5,89,43,67,34,61,22,90};
//外层循环比较的次数,需要几次才能排序完
for(int i=1;i<arr.length-1;i++)
{
int j=i;
while(j>0&&arr[j]<arr[j-1])
{
int temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
j--;//往前递减让当前元素继续和上一个元素比较
}
}
System.out.println(Arrays.toString(arr));
}
}