zoukankan      html  css  js  c++  java
  • 一个排序算法的解析

    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

  • 相关阅读:
    iptables允许FTP
    FTP服务添加用户及设置权限
    Python之异步IO&RabbitMQ&Redis
    Python之生产者&、消费者模型
    如何使用Git上传项目代码到github
    11-3 基于cookie和session的登录模块
    11-1 会话控制cookie
    11-2 会话控制session
    10-4 文件的下载
    10-3 文件的上传
  • 原文地址:https://www.cnblogs.com/softidea/p/4252762.html
Copyright © 2011-2022 走看看