-->
当前位置:首页 > 题库 > 正文内容

程序填空题:另类选择排序

Luz4年前 (2021-05-10)题库2833
下列代码的功能是将一列元素{ `r[1] … r[n]` }按其键值 `key` 的非递减顺序排序。普通选择排序是每次仅将一个待排序列的最小元放到正确的位置上,而这个另类的选择排序是每次从待排序列中同时找到最小元和最大元,把它们放到最终的正确位置上。

```c++
void sort( list r[], int n )
{
int i, j, mini, maxi;

for (i=1; i mini = maxi = i;
for( j=i+1; @@[j<=n-i+1](3); ++j ){
if( @@[r[j]->key < r[mini]->key](3) ) mini = j;
else if(r[j]->key > r[maxi]->key) maxi = j;
}
if( @@[mini != i](3) ) swap(&r[mini], &r[i]);
if( maxi != n-i+1 ){
if( @@[maxi == i](3) ) swap(&r[mini], &r[n-i+1]);
else swap(&r[maxi], &r[n-i+1]);
}
}
}
```





答案:
第1空:j<=n-i+1

第2空:r[j]->key < r[mini]->key

第3空:mini != i

第4空:maxi == i

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。