实现希尔和快速排序
} } } printf(" d=%d: ",d); for(k=0;k<n;k++) printf("%3d",R[k].key); printf("\n"); d=d/2;
2、快速排序,在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入适当位置后,数据序列被此记录划分成两部分。所有关键字比该记录关键字小的记录放置在前一部分,所有比它大的记录放置在后一部分,并把该记录排在这两部分的中间(称为该记录归位),这个过程称作一趟快速排序。具体的算法如下所示:
void QuickSort(RecType R[],int s,int t)
{
int i=s,j=t,k; RecType temp; if(s<t) { temp=R[s]; while(i!=j) { } R[i]=temp; while(j>i&&R[j].key>temp.key) { } while(i<j&&R[i].key<temp.key) { } R[j]=R[i]; j--; i++; if(i<j) R[i]=R[j]; i++; j--; if(i<j)