阅读下列对正整数关键字序列L操作的算法,并回答问题: (1)设L=(28,19,27,49,56,12,10,25,20,50),写出f33(L,4)的返回值; (2)简述函数f33的功能。 int Partition(SeqLis

admin2009-05-09  63

问题 阅读下列对正整数关键字序列L操作的算法,并回答问题:
   (1)设L=(28,19,27,49,56,12,10,25,20,50),写出f33(L,4)的返回值;
   (2)简述函数f33的功能。
   int Partition(SeqList*L,int low,int high);
   //对L[low…high]做划分,返回基准记录的位置,并使左部的关键字
   //都小于或等于基准记录的关键字,右部的关键字都大于基准记录的关键字
   int f33(SeqList L,int k){
     int low,high,pivotpos;
     low=1;
     high=L.length;
     if(k<low||k>high)
        return-1;
     do {
        pivotpos=Partition(&L,low,high);//调用快速排序的划分算法
        if(pivotpos<k)
            low=pivotpos+1;
        else if(pivotpos>k)
             high=pivotpos-1;
      }while(pivotpos!=k);
      return L.data[pivotpos];
   }

选项

答案1. 20 2. 利用快速排序的“划分”机制进行查找,以求取序列中排行第k小的元素。

解析
转载请注明原文地址:https://kaotiyun.com/show/g5Ax777K
本试题收录于: 数据结构题库理工类分类
0

最新回复(0)