码迷,mamicode.com
首页 > 编程语言 > 详细

一个排序算法的解析

时间:2015-01-27 14:47:53      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

 

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

 

一个排序算法的解析

标签:

原文地址:http://www.cnblogs.com/softidea/p/4252762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!