我在C++中有一个由20个整数组成的数组,我想对它们进行洗牌(随机顺序)。
我还想对它们进行排序,使得前10个数字按升序排列是最小的,其余的都是随机的。
有没有办法自动执行此操作?
最佳答案
为什么不使用<algorithm>
和<vector>
库?
您可以使用partial_sort,它确实可以满足您的需求
#include <iostream>
#include <algorithm>
#include <vector>
bool myfunction (int i,int j) { return (i<j); }
int main () {
int myints[] = {9,8,7,6,5,4,3,2,1};
std::vector<int> myvector (myints, myints+9);
std::partial_sort (myvector.begin(), myvector.begin()+5, myvector.end());
std::partial_sort (myvector.begin(), myvector.begin()+5, myvector.end(),myfunction);
std::cout << "myvector contains:";
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
关于c++ - 具有特定要求的C++数组排序/混排,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19253279/