首页 > 代码库 > 一个排序算法的解析

一个排序算法的解析

 

int[] source = { 8, 9, 10, 7, 6, 10, 20, 5, 21 };

 

    public static void sort(int[] list) {        for (int i = 1; i < list.length; i++) {            int baseNumber = list[i];            System.out.print("i="+i+",baseNumber="+baseNumber+".Result:");            int j=i;            for (; j - 1 >= 0; j--) {                if (list[j - 1] > baseNumber) {                    list[j] = list[j - 1];                } else {                    break;                }            }            if (i > j) {                list[j] = baseNumber;            }            travelArray(list);        }    }

 

 

Output:

i=1,baseNumber=9.Result:8,9,10,7,6,10,20,5,21,i=2,baseNumber=10.Result:8,9,10,7,6,10,20,5,21,i=3,baseNumber=7.Result:7,8,9,10,6,10,20,5,21,i=4,baseNumber=6.Result:6,7,8,9,10,10,20,5,21,i=5,baseNumber=10.Result:6,7,8,9,10,10,20,5,21,i=6,baseNumber=20.Result:6,7,8,9,10,10,20,5,21,i=7,baseNumber=5.Result:5,6,7,8,9,10,10,20,21,i=8,baseNumber=21.Result:5,6,7,8,9,10,10,20,21,5,6,7,8,9,10,10,20,21,

 

分析:

原理:在以前排序的基础上再排序

代码分析
排序前两个元素8,9:取下标1的值为baseNumber,为9,下标1前面有元素8,9>8,不需要换位,break。前两个元素8,9现在有序的
排序前三个元素8,9,10:取下标2的值为baseNumber,为10,下标2前面有元素9,10>9,不需要换位,break。前三个元素8,9,10现在是有序的
排序前四个元素8,9,10,7:取下标3的值为baseNumber,为7,
下标3前面有元素10,7<10,需要换位,得到8,9,10,10
下标2前面有元素9,7<9,需要换位,得到8,9,9,10
下标1前面有元素8,7<8,需要换位,得到8,8,9,10
下标为0时,循环结束。
将baseNumber,为7,赋给下标为0的位置,得到7,8,9,10

 

一个排序算法的解析