插入排序
插入排序思想
假设有一个int类型,数组长度为n的数组
1.我们要保证数组下标在0~0中有序排列,这是肯定的,在0~0中只有一个数字
2.保证数组下标在0~1中有序,我们要比较下标为0与下标为1的数字,若下标为1大于下标为0的数字,就进行交换
3.保证数组下标在0~2中有序,因为下标在0~1中已经有效,所以只需用数组下标为2的数与0~1中数进行比较
。。。。。。。。
保证数组下标在0~n-1中有序,就要用数组下标为n-1的数与数组下标为0~n-2范围中的数字进行比较
代码
1 int[] a = {6,4,5,3,1}; 2 //数组下标范围在0~0中已经有效,所以外层循环从1开始,即从范围0~1开始 3 for (int i = 1; i < a.length; i++){ 4 //每一次都是下标最后的数字与前面下标的数字逐个比较,直到比较到数组下标为0时结束 5 for (int j = i-1; j >=0; j--){ 6 if (a[j] > a[j+1]){ 7 int b = a[j]; 8 a[j] = a[j+1]; 9 a[j+1] = b; 10 } 11 } 12 } 13 for (int i = 0; i < a.length; i++){ 14 System.out.println(a[i]); 15 }
作者:http://cnblogs.com/lyc-code/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权力。