zoukankan      html  css  js  c++  java
  • shell排序算法

    今天看《The C Programming Language》的时候看到了shell排序算法,

    /* shellsort: sort v[0]...v[n-1] into increasing order */
    void shellsort(int v[], int n)
    {
        int gap, i, j, temp;
        for (gap = n/2; gap > 0; gap /= 2)
            for (i = gap; i < n; i++)
                for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap) {
                    temp = v[j];
                    v[j] = v[j+gap];
                    v[j+gap] = temp;
                }
    }

    代码三两行,竟然有3个for循环,眼睛都快瞅瞎了也没有瞅明白,所以就加了一些debug信息,方便分析shell排序的原理。

    /* lrxing 2016
     * 
     * shell 排序算法
     * 基本思想:
     *     先比较距离远的元素,而不是像简单交换排序算法那样先比较相邻的元素。
     *     这样可以快速减少大量的无序情况,从而减轻后续的工作。
     *     被比较的元素之间的距离逐步减少,直到减少为 1,这时排序变成了相邻元素的互换。
     * 代码描述:
     *     为了形象的观察shell排序的工作方式,打印出了代码的每一次循环时数组的状态,
     *     以及当前正在比较的两个值的位置。
     */
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define MAX_LENGTH 20
    #define DEBUG 1
    
    void shellsort(int v[], int n)
    {
    #if DEBUG
        printf("Start to sort...
    ");
    #endif
        int gap, i, j, temp,k, count = 0;
        for(gap = n / 2; gap > 0; gap /= 2)
        {
    #if DEBUG
            printf("==>GAP : %d
    ", gap);
    #endif
            for(i = gap; i < n; i++)
            {
    #if DEBUG
                printf("====>i : %d
    ", i);
    #endif
                for(j = i-gap; j>=0/* && v[j] >v[j+gap]*/; j -= gap)
                {
    #if DEBUG
                    count++;
                    for(k = 0; k < n; k++)
                    {
                        printf("%3d ", v[k]);
                    }
                    printf("
    ");
                    for(k = 0; k < n; k++)
                    {
                        if(k == j || k == (j+gap))
                            printf("%3c ", '^');
                        else
                            printf("    ");
                    }
                    printf("
    ");
    #endif
                    if(v[j] >v[j+gap])
                    {
                        temp = v[j];
                        v[j] = v[j+gap];
                        v[j+gap] = temp;
                    }
                }
            }
        }
    #if DEBUG
        printf("Totally loop %d Times.
    ", count);
    #endif
    }
    
    int main()
    {
        int arr[MAX_LENGTH], i;
        srand((int)time(NULL));
        printf("Unsorted Array:
    ");
        /* 初始化一个乱序数组,随机生成20个1000以内的正整数 */
        for(i = 0; i< MAX_LENGTH; i++)
        {
            arr[i] = rand()%1000;
            printf("[%d] ", arr[i]);
        }
        printf("
    ");
        /* 调用shell排序函数进行排序 */
        shellsort(arr, MAX_LENGTH);
        printf("Sorted Array:
    ");
        for(i = 0; i< MAX_LENGTH; i++)
        {
            printf("[%d] ", arr[i]);
        }
        printf("
    ");
        return 0;
    }

    随机生成一个长度为20的数组,然后进行排序,并将每一次判断的状态打印出来

    Unsorted Array:
    [17] [444] [770] [702] [653] [872] [660] [567] [58] [877] [153] [218] [984] [985] [88] [665] [379] [337] [520] [850] 
    Start to sort...
    ==>GAP : 10
    ====>i : 10
     17 444 770 702 653 872 660 567  58 877 153 218 984 985  88 665 379 337 520 850 
      ^                                       ^                                     
    ====>i : 11
     17 444 770 702 653 872 660 567  58 877 153 218 984 985  88 665 379 337 520 850 
          ^                                       ^                                 
    ====>i : 12
     17 218 770 702 653 872 660 567  58 877 153 444 984 985  88 665 379 337 520 850 
              ^                                       ^                             
    ====>i : 13
     17 218 770 702 653 872 660 567  58 877 153 444 984 985  88 665 379 337 520 850 
                  ^                                       ^                         
    ====>i : 14
     17 218 770 702 653 872 660 567  58 877 153 444 984 985  88 665 379 337 520 850 
                      ^                                       ^                     
    ====>i : 15
     17 218 770 702  88 872 660 567  58 877 153 444 984 985 653 665 379 337 520 850 
                          ^                                       ^                 
    ====>i : 16
     17 218 770 702  88 665 660 567  58 877 153 444 984 985 653 872 379 337 520 850 
                              ^                                       ^             
    ====>i : 17
     17 218 770 702  88 665 379 567  58 877 153 444 984 985 653 872 660 337 520 850 
                                  ^                                       ^         
    ====>i : 18
     17 218 770 702  88 665 379 337  58 877 153 444 984 985 653 872 660 567 520 850 
                                      ^                                       ^     
    ====>i : 19
     17 218 770 702  88 665 379 337  58 877 153 444 984 985 653 872 660 567 520 850 
                                          ^                                       ^ 
    ==>GAP : 5
    ====>i : 5
     17 218 770 702  88 665 379 337  58 850 153 444 984 985 653 872 660 567 520 877 
      ^                   ^                                                         
    ====>i : 6
     17 218 770 702  88 665 379 337  58 850 153 444 984 985 653 872 660 567 520 877 
          ^                   ^                                                     
    ====>i : 7
     17 218 770 702  88 665 379 337  58 850 153 444 984 985 653 872 660 567 520 877 
              ^                   ^                                                 
    ====>i : 8
     17 218 337 702  88 665 379 770  58 850 153 444 984 985 653 872 660 567 520 877 
                  ^                   ^                                             
    ====>i : 9
     17 218 337  58  88 665 379 770 702 850 153 444 984 985 653 872 660 567 520 877 
                      ^                   ^                                         
    ====>i : 10
     17 218 337  58  88 665 379 770 702 850 153 444 984 985 653 872 660 567 520 877 
                          ^                   ^                                     
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
      ^                   ^                                                         
    ====>i : 11
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
                              ^                   ^                                 
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
          ^                   ^                                                     
    ====>i : 12
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
                                  ^                   ^                             
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
              ^                   ^                                                 
    ====>i : 13
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
                                      ^                   ^                         
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
                  ^                   ^                                             
    ====>i : 14
     17 218 337  58  88 153 379 770 702 850 665 444 984 985 653 872 660 567 520 877 
                                          ^                   ^                     
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
                      ^                   ^                                         
    ====>i : 15
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
                                              ^                   ^                 
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
                          ^                   ^                                     
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
      ^                   ^                                                         
    ====>i : 16
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
                                                  ^                   ^             
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
                              ^                   ^                                 
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
          ^                   ^                                                     
    ====>i : 17
     17 218 337  58  88 153 379 770 702 653 665 444 984 985 850 872 660 567 520 877 
                                                      ^                   ^         
     17 218 337  58  88 153 379 770 702 653 665 444 567 985 850 872 660 984 520 877 
                                  ^                   ^                             
     17 218 337  58  88 153 379 567 702 653 665 444 770 985 850 872 660 984 520 877 
              ^                   ^                                                 
    ====>i : 18
     17 218 337  58  88 153 379 567 702 653 665 444 770 985 850 872 660 984 520 877 
                                                          ^                   ^     
     17 218 337  58  88 153 379 567 702 653 665 444 770 520 850 872 660 984 985 877 
                                      ^                   ^                         
     17 218 337  58  88 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                  ^                   ^                                             
    ====>i : 19
     17 218 337  58  88 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                                                              ^                   ^ 
     17 218 337  58  88 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                                          ^                   ^                     
     17 218 337  58  88 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                      ^                   ^                                         
    ==>GAP : 2
    ====>i : 2
     17 218 337  58  88 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
      ^       ^                                                                     
    ====>i : 3
     17 218 337  58  88 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
          ^       ^                                                                 
    ====>i : 4
     17  58 337 218  88 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
              ^       ^                                                             
     17  58  88 218 337 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
      ^       ^                                                                     
    ====>i : 5
     17  58  88 218 337 153 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                  ^       ^                                                         
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
          ^       ^                                                                 
    ====>i : 6
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                      ^       ^                                                     
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
              ^       ^                                                             
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
      ^       ^                                                                     
    ====>i : 7
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                          ^       ^                                                 
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                  ^       ^                                                         
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
          ^       ^                                                                 
    ====>i : 8
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                              ^       ^                                             
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                      ^       ^                                                     
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
              ^       ^                                                             
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
      ^       ^                                                                     
    ====>i : 9
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                                  ^       ^                                         
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                          ^       ^                                                 
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                  ^       ^                                                         
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
          ^       ^                                                                 
    ====>i : 10
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                                      ^       ^                                     
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                              ^       ^                                             
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                      ^       ^                                                     
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
              ^       ^                                                             
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
      ^       ^                                                                     
    ====>i : 11
     17  58  88 153 337 218 379 567 520 653 665 444 770 702 850 872 660 984 985 877 
                                          ^       ^                                 
     17  58  88 153 337 218 379 567 520 444 665 653 770 702 850 872 660 984 985 877 
                                  ^       ^                                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                          ^       ^                                                 
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                  ^       ^                                                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
          ^       ^                                                                 
    ====>i : 12
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                              ^       ^                             
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                      ^       ^                                     
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                              ^       ^                                             
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                      ^       ^                                                     
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
              ^       ^                                                             
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
      ^       ^                                                                     
    ====>i : 13
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                                  ^       ^                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                          ^       ^                                 
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                  ^       ^                                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                          ^       ^                                                 
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                  ^       ^                                                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
          ^       ^                                                                 
    ====>i : 14
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                                      ^       ^                     
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                              ^       ^                             
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                      ^       ^                                     
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                              ^       ^                                             
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                      ^       ^                                                     
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
              ^       ^                                                             
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
      ^       ^                                                                     
    ====>i : 15
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                                          ^       ^                 
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                                  ^       ^                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                          ^       ^                                 
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                  ^       ^                                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                          ^       ^                                                 
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                  ^       ^                                                         
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
          ^       ^                                                                 
    ====>i : 16
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 850 872 660 984 985 877 
                                                              ^       ^             
     17  58  88 153 337 218 379 444 520 567 665 653 770 702 660 872 850 984 985 877 
                                                      ^       ^                     
     17  58  88 153 337 218 379 444 520 567 665 653 660 702 770 872 850 984 985 877 
                                              ^       ^                             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                      ^       ^                                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                              ^       ^                                             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                      ^       ^                                                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
              ^       ^                                                             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
      ^       ^                                                                     
    ====>i : 17
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                                                  ^       ^         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                                          ^       ^                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                                  ^       ^                         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                          ^       ^                                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                  ^       ^                                         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                          ^       ^                                                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                  ^       ^                                                         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
          ^       ^                                                                 
    ====>i : 18
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                                                      ^       ^     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                                              ^       ^             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                                      ^       ^                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                              ^       ^                             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                      ^       ^                                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                              ^       ^                                             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                      ^       ^                                                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
              ^       ^                                                             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
      ^       ^                                                                     
    ====>i : 19
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 984 985 877 
                                                                          ^       ^ 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                                                  ^       ^         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                                          ^       ^                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                                  ^       ^                         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                          ^       ^                                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                  ^       ^                                         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                          ^       ^                                                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^       ^                                                         
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^       ^                                                                 
    ==>GAP : 1
    ====>i : 1
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 2
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 3
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 4
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 5
     17  58  88 153 337 218 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 6
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 7
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 8
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 9
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 10
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 11
     17  58  88 153 218 337 379 444 520 567 660 653 665 702 770 872 850 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 12
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 13
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                      ^   ^                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 14
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                          ^   ^                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                      ^   ^                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 15
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                              ^   ^                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                          ^   ^                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                      ^   ^                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
      ^   ^                                                                         
    ====>i : 16
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 872 850 877 985 984 
                                                                  ^   ^             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                              ^   ^                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                          ^   ^                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                      ^   ^                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
      ^   ^                                                                         
    ====>i : 17
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                                      ^   ^         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                                  ^   ^             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                              ^   ^                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                          ^   ^                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                      ^   ^                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
      ^   ^                                                                         
    ====>i : 18
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                                          ^   ^     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                                      ^   ^         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                                  ^   ^             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                              ^   ^                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                          ^   ^                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                      ^   ^                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
      ^   ^                                                                         
    ====>i : 19
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 985 984 
                                                                              ^   ^ 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                                                          ^   ^     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                                                      ^   ^         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                                                  ^   ^             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                                              ^   ^                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                                          ^   ^                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                                      ^   ^                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                                  ^   ^                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                              ^   ^                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                          ^   ^                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                      ^   ^                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                                  ^   ^                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                              ^   ^                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                          ^   ^                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                      ^   ^                                                         
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
                  ^   ^                                                             
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
              ^   ^                                                                 
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
          ^   ^                                                                     
     17  58  88 153 218 337 379 444 520 567 653 660 665 702 770 850 872 877 984 985 
      ^   ^                                                                         
    Totally loop 320 Times.
    Sorted Array:
    [17] [58] [88] [153] [218] [337] [379] [444] [520] [567] [653] [660] [665] [702] [770] [850] [872] [877] [984] [985]

    从记录的循环判断次数可以看到,长度为20的数组,需要判断320次才能输出正确的已排序序列,效率不是太好。

  • 相关阅读:
    Ext.Net学习笔记02:Ext.Net用法概览
    Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
    【转】好的用户界面-界面设计的一些技巧
    发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容
    抢票季:吐槽12306 & 分享抢票经验
    2.5星|《解谜茑屋》:疑似企业公关稿,对话体,信息含量较低
    樊登推荐过的书15本,好书2本半
    一些黑猩猩会使用草药治病,疗效还不错:3.5星|邓巴《人类的算法》
    莫奈塞尚的知名度,主要归功于富豪画家卡耶博特的遗赠:4星|《引爆流行》
    4星|《猎药师》:五千年以来药物研发简史,作者是前一线科学家
  • 原文地址:https://www.cnblogs.com/lrxing/p/6031417.html
Copyright © 2011-2022 走看看