希尔排序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. ");

scanf("%d", &N);

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

{

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

return -1;

}

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

for(i=0; i

{

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

}

/*sort and ouput*/

ShellSort(Arr, N);

for(i=0; i

{

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

}

printf(" ");

return 0;

}

希尔排序的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. "); scanf("%d", &N); if(N <= 0 || N >100) { printf("Invalid input N[%d] ", N); return -1; } printf("Please input %d integer numbers. ", N); for(i=0; i { scanf("%d", &Arr[i]); } /*sort and ouput*/ ShellSort(Arr, N); for(i=0; i { printf("%d ",Arr[i]); } printf(" "); return 0; }
经验分享 程序员 微信小程序 职场和发展