希尔排序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; }上一篇:
IDEA上Java项目控制台中文乱码