gpt4 book ai didi

c++ - C++中的双向选择排序

转载 作者:行者123 更新时间:2023-11-27 23:19:25 25 4
gpt4 key购买 nike

我正在开发一个程序来对一个小数组进行排序。这是一项类作业,需要进行选择排序,但我想比它要求的更进一步。我以前做过选择排序,我想尝试实现一个双向版本。它有效,除了一个问题。我的第二个结果始终是第二个结果,并且从不排序。我觉得我错过了一些小而愚蠢的东西。

这是我的搜索功能的代码

void biSelSort(string engine[], double hits[]) {    
int k = ARRAY_SIZE - 1;
for (int i = 0; i < k; i++) {
int min = i;
int max = i;
for (int j = i + 1; j <= k; j++) {
if (hits[j] < hits[min]) {
min = j;
}
if (hits[j] > hits[max]) {
max = j;
}
}
string tS = engine[min];
double tD = hits[min];
engine[min] = engine[i];
hits[min] = hits[i];
engine[i] = tS;
hits[i] = tD;

if (max == i) {
tS = engine[min];
tD = hits[min];
engine[min] = engine[k];
hits[min] = hits[k];
engine[k] = tS;
hits[k] = tD;
} else {
tS = engine[max];
tD = hits[max];
engine[max] = engine[k];
hits[max] = hits[k];
engine[k] = tS;
hits[k] = tD;
}
i++;
k--;
}
}

最佳答案

你的意思是增加 i 两次,一次在你的 for 语句中,一次在你的循环结束时?如果你这样做了,你真的应该修改你的代码,这样你就只在一个地方做。

关于c++ - C++中的双向选择排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com