插入排序
/** * 插入排序 * @author Administrator * */ public class InsertSortTest { public static void main(String[] args) { //测试数据 int[] array ={1,8,56,7,3,34,54,2}; //排序前 for (int i = 0; i < array.length; i++) { System.out.print(array[i]+","); } System.out.println(); //排序 insertSort(array,true); //排序后 for (int i = 0; i < array.length; i++) { System.out.print(array[i]+","); } } /** * * @param array * @param desc true为 升序,false为降序 */ private static void insertSort(int[] array, boolean desc) { int len = array.length; int key; int i; for (int j = 1; j < len; j++) { key = array[j]; i = j - 1; while (i >= 0 && (desc ? array[i] > key : array[i] < key)) { array[i+1] = array[i]; i = i-1; } array[i+1] = key; } } }
老实说,这个我不知道怎么写备注.
放到程序里调试一遍就知道原理了..
按照我的想法.举个生活中的例子..
有10张牌,都是牌面朝下..
j=1; i=0;
第一次,右手拿第二张key,左手拿第一张array[i],第一张如果比第二张大,则放到第二张位置...
j=2; i=1; key =array[j];
第一次,右手拿第三张key,左手拿第二张array[i],第二张如果比第三张大,则放到第三张位置...然后key再跟第一张比较...
解释得连自己也看不懂,自己挖掘吧...