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...\n"); #endif int gap, i, j, temp,k, count = 0; for(gap = n / 2; gap > 0; gap /= 2) { #if DEBUG printf("==>GAP : %d\n", gap); #endif for(i = gap; i < n; i++) { #if DEBUG printf("====>i : %d\n", 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("\n"); for(k = 0; k < n; k++) { if(k == j || k == (j+gap)) printf("%3c ", '^'); else printf(" "); } printf("\n"); #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.\n", count); #endif } int main() { int arr[MAX_LENGTH], i; srand((int)time(NULL)); printf("Unsorted Array:\n"); /* 初始化一个乱序数组,随机生成20个1000以内的正整数 */ for(i = 0; i< MAX_LENGTH; i++) { arr[i] = rand()%1000; printf("[%d] ", arr[i]); } printf("\n"); /* 调用shell排序函数进行排序 */ shellsort(arr, MAX_LENGTH); printf("Sorted Array:\n"); for(i = 0; i< MAX_LENGTH; i++) { printf("[%d] ", arr[i]); } printf("\n"); 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次才能输出正确的已排序序列,效率不是太好。