问题描述:对10个随机数据进行希尔排序
#include<stdio.h>
#include<time.h>
#include <stdlib.h>
# define N 10
void fun(int a[],int n){
int i,r,j,temp;
for(r=N/2;r>=1;r/=2){
for(i=r;i<N;i++){
temp=a[i];
j=i-r;
while(j>=0 && temp<a[j]){
a[j+r]=a[j];
j-=r;}
a[j+r]=temp;
}
}
}
void main( ){
int i,shuzu[N],n;
printf("希尔排序示例:\n");
srand(time(NULL));
for(i=0;i<=N-1;i++){
shuzu[i]=rand()/1000+100;
}
printf("产生的随机数列为:");
for(i=0;i<=N-1;i++){
printf("%d ",shuzu[i]);}
printf("\n");
fun(shuzu,N);
printf("希尔排序后的数列为:");
for(i=0;i<=N-1;i++){
printf("%d ",shuzu[i]);
}
printf("\n");
}
运行结果如下: