• 一个排序算法的解析


    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

  • 相关阅读:
    VMware-Fault-Tolerant Virtual Machine--论文翻译
    Mysql InnoDB存储引擎的锁相关
    深入理解JVM——读书笔记(虚拟机字节码执行引擎)
    Manacher算法
    The Google File System(论文阅读笔记)
    Java并发编程实践——读书笔记(一)
    MapReduce: Simplified Data Processing on Large Clusters
    二叉搜索树倒序O(nlogn)建树
    Day17
    Day16
  • 原文地址:https://www.cnblogs.com/softidea/p/4252762.html
Copyright © 2020-2023  润新知