希尔排序c语言原理,希尔排序C语言实现

希尔排序的C语言实现,代码如下:

# include

/*希尔排序(最小增量排序) 改进的插入排序 增量选取N/2 增量为1时全部数据插入排序 */

void ShellSort(int Arr[], int N)

{

int i,j,l;

int temp;

int increment;

increment = N/2;

while(increment>0)

{

for(l=0; l

{

for(i=l; i

{

for(j=i+increment; j>l; j=j-increment)

{

if(Arr[j] < Arr[j-increment])

{

temp = Arr[j];

Arr[j] = Arr[j-increment];

Arr[j-increment] = temp;

}

}

}

}

increment = increment / 2;

}

}

int main(void)

{

int N;

int Arr[100];

int i;

/*input*/

printf("Please input an positive integer N which is between 1 and 100.\n");

scanf("%d", &N);

if(N <= 0 || N >100)

{

printf("Invalid input N[%d]\n", N);

return -1;

}

printf("Please input %d integer numbers.\n", N);

for(i=0; i

{

scanf("%d", &Arr[i]);

}

/*sort and ouput*/

ShellSort(Arr, N);

for(i=0; i

{

printf("%d ",Arr[i]);

}

printf("\n");

return 0;

}