基本思想:
首先拿出第2个与的比第一个比较,如果第二个数比第一个数大小,将第二个数插到第一个数前面,反之不动,这样比较下来,前两个数就比较好了,在拿出第三个数与与第二个数比较,如果第三个数比第二个数大(那肯定也比第一个数大,不用比较,前三个数已经排好了),但是如果第三个数比第二个数小,将第三个数插到第二个数前面,在拿这个数和第一个数比较,如果比第一个大,则不动,说明第三个数比第一个大,比第二个小,放在中间就行,如果比第一个还小,则继续往前面插,再拿第四个,第五个.......,将你要比较的数放在比前一个大,比后一个小的位置。
看图:
代码如下:
//直接插入排序
// int[] arr={1996,2008,1,5,2,50,25,200,152,562,1000,999};
public static void insert(int[] arr){
for(int i=0;i<arr.length-1;i++){
int end=i;
int x=arr[end+1];
while(end>=0) {
if (arr[end] > x) {
arr[end+1]=arr[end];
end--;
}else {
break;
}
}
arr[end+1]=x;
}
System.out.println(Arrays.toString(arr));
}
}
结果如下:
注意: