今天看《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/; gap > ; gap /= )
for (i = gap; i < n; i++)
for (j=i-gap; j>= && 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 = ;
for(gap = n / ; gap > ; gap /= )
{
#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>=/* && v[j] >v[j+gap]*/; j -= gap)
{
#if DEBUG
count++;
for(k = ; k < n; k++)
{
printf("%3d ", v[k]);
}
printf("\n");
for(k = ; 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 = ; i< MAX_LENGTH; i++)
{
arr[i] = rand()%;
printf("[%d] ", arr[i]);
}
printf("\n");
/* 调用shell排序函数进行排序 */
shellsort(arr, MAX_LENGTH);
printf("Sorted Array:\n");
for(i = ; i< MAX_LENGTH; i++)
{
printf("[%d] ", arr[i]);
}
printf("\n");
return ;
}

随机生成一个长度为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次才能输出正确的已排序序列,效率不是太好。

shell排序算法的更多相关文章

  1. Shell排序算法和合并排序算法

    Shell排序(希尔排序)算法Shell排序严格来说基于插入排序的思想,其又称为希尔排序或者缩小增量排序. Shell排序的流程:1.将由n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1个 ...

  2. Java常见排序算法之Shell排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  3. 插入排序与shell排序(希尔排序)

    1 .插入排序的过程如同我们平时打扑克牌取牌插入的过程,不断将取出的扑克牌插入已经排好的地方. 插入排序过程初始有序区间大小为1,取出无序区间的首元素,查找有序区间的合适位置,进行插入.不断重复上述过 ...

  4. Java常用排序算法

    在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序. 一般来说外排序分为两个步骤:预处理和合并排序.首先,根据可用内存的大小,将外存上含有n个纪录的文件分成若干长 ...

  5. Shell排序(改良的插入排序)

    Shell排序算法最初是由D.L Shell于1959年提出,假设要排序的元素有n个,则每个进行插入排序是并不是所偶的元素同时进行,而是去一段间隔. Shell首先将间隔设定为n/2,然后跳跃的进行插 ...

  6. Shell排序——软考(五)

    希尔排序是一种插入排序,是对直接插入排序的一种改进,该算法出自于D.L.Shell,因此得名为希尔.Shell排序又名缩小增量排序. 思想      假设初始序列为n个元素,先取一个小于n的整数d1作 ...

  7. C / C++算法学习笔记(8)-SHELL排序

    原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...

  8. Java排序算法(四):Shell排序

    [基本的想法] 将原本有大量记录数的记录进行分组.切割成若干个子序列,此时每一个子序列待排序的记录个数就比較少了,然后在这些子序列内分别进行直接插入排序,当整个序列都基本有序时.再对全体记录进行一次直 ...

  9. 七内部排序算法汇总(插入排序、Shell排序、冒泡排序、请选择类别、、高速分拣合并排序、堆排序)

    写在前面: 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的随意序列,又一次排列成一个按keyword有序的序列.因此排序掌握各种排序算法很重要. 对以下介绍的各个排序,我们假定全部排 ...

随机推荐

  1. MySQL 5.7版本安装教程-踩坑总结

    下载 MySQL下载地址 选择下载64位(看自己电脑是32位还是64位) 点击下载之后,它会让你登录,没有Oracle账户,跟着它的步骤注册一个就好了. 安装 打开下载好的压缩包解压到你的某一目录下, ...

  2. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...

  3. Unix/Linux 脚本中 “set -e” 的作用

    ----------------------------------------------------------- #!/bin/bash set -e command 1 command 2 . ...

  4. Python读写文件需要注意的地方 2015-03-31 23:19 69人阅读 评论(0) 收藏

    <span style="font-family: 'Microsoft YaHei'; background-color: rgb(255, 255, 255);"> ...

  5. 基于amoeba实现mysql数据库的读写分离/负载均衡

    一.Amoeba的简述:[来自百度百科]      Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请 ...

  6. QStandardItemModel角色控制及QTreeView加入不同的右键菜单

    1.概述 QTreeView最长用的一个功能就是作为导航栏,像vs里的项目结构树,word的文档结构图,资源管理器的文档结构,等等都是利用树形结构组织的,在前面已经讲述了Qt中使用标准化项目模型QSt ...

  7. Qt 学习之路 :菜单栏、工具栏和状态栏

    在之前的<添加动作>一文中,我们已经了解了,Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示.QAction可以添加到菜单上.工具栏上.期间,我们还详细介绍了一 ...

  8. JSP-标准动作标记

    JSP标准动作标记 在客户请求JSP页面时,JSP动作利用XML语法格式的标记来控制Servlet引擎的行为.利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面.为J ...

  9. [转] Express 4 中的变化

    http://www.cnblogs.com/haogj/p/3985438.html 概览 从 Express 3 到Express 4 是一个巨大的变化,这意味着现存的 Express 3 应用在 ...

  10. ARC和非ARC文件混编

    在编程过程中,我们会用到很多各种各样的他人封装的第三方代码,但是有很多第三方都是在非ARC情况下运行的,当你使用第三方编译时出现和下图类似的错误,就说明该第三方是非ARC的,需要进行一些配置. 解决方 ...