- 28
- 0
- 约1.32万字
- 约 12页
- 2017-02-06 发布于湖北
- 举报
数据结构--例题
!!对给定关键字序号j(1jn),要求在无序记录A[1..n]中找到关键字从小到大排在第j位上的记录,写一个算法利用快速排序的划分思想实现上述查找。(要求用最少的时间和最少的空间)
例如:给定无序关键字{7,5,1,6,2,8,9,3},当j=4时,找到的关键字应是5。
int partition(RecType A[], int 1, int n)
{
int i=1,j=n;x=A[i].key;
i=1;
while(ij)
{
while(ij A[j].key=x) j--;
if(ij) A[i++]=A[j];
while(ij A[i].key=x) i++;
if(ij) A[j--]=A[i];
}
return i;
}
void Find_j(RecType A[],int n,int j) n为数组长度
{
i=partition (A,1,n);
while(i!=j)
if(ij) i=partition(A,i+1,n); ∥在后半部分继续进行划分
else i=partition(A,1,i-1); ∥在前半部分继续进行划分
}
原创力文档

文档评论(0)