【发布时间】:2022-01-05 10:20:25
【问题描述】:
int partition(std::vector<int>& tab, int size){
int pivot = rand() % size;
std::swap(tab[pivot], tab[0]);
int i = 1;
for(int j = 1; j < size; j++){
if(tab[j] < tab[0]){
std::swap(tab[i], tab[j]);
i++;
}
}
std::swap(tab[0], tab[i-1]);
return i-1;
}
这段代码非常封闭,可以给我一个很好的排序整数列表,但到目前为止还不够完美。我就是不明白哪里错了。
如何修改 partition() 以使未排序的结果得到良好排序?
【问题讨论】:
-
这个程序足够小,您可以在调试器中单步执行它。程序在什么时候做出了与您预期不同的事情?