如果我让用户输入10个随机数,我想从最小到最大排序它们是使用最基本的C ++语言执行此操作的最佳方法。
答案 0 :(得分:21)
std::vector<int> numbers;
// get the numbers from the user here.
std::sort(numbers.begin(), numbers.end());
答案 1 :(得分:14)
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec;
vec.push_back(1);
vec.push_back(4);
vec.push_back(3);
vec.push_back(2);
sort( vec.begin(), vec.end() );
for (vector<int>::const_iterator it=vec.begin(); it!=vec.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
答案 2 :(得分:2)
使用维护排序的结构:std::multiset
#include <iostream>
#include <set>
#include <boost/lexical_cast.hpp>
int main(int argc, char* argv[])
{
std::multiset<int> set;
for (int i = 1; i != argc; ++i) {
set.insert(boost::lexical_cast<int>(argv[i]));
}
for (int i: set) { std::cout << i << " "; }
std::cout << "\n";
}
调用:
$ yourprogram 1 5 4 6 7 82 6 7 8
(注意:参数的数量不受限制)
答案 3 :(得分:0)
这取决于您的要求。如果你只是想对它们进行排序,并且速度只是适度考虑,那么对于如此小的n值(10),插入排序就可以了。快速实施(从头开始),适用于小尺寸。
答案 4 :(得分:0)
//this is sorting min--->max without pointers
#include<iostream>
using namespace std;
int main()
{int n;
cout<<"How much numbers you wanna sort? "<<endl;
cin>>n;
int broj[n];
cout<<"Enter numbers: "<<endl;
for(int k=0;k<n;k++)
{
cin>>broj[k];
}
int min=0;
for(int z=0;z<n;z++)
{
loop:
min=broj[z];
for(int i=z;i<n;i++)
{
if(min<=broj[i])
{
}
else
{
min=broj[i];
broj[i]=broj[z];
broj[z]=min;
goto loop;
}
}
}
cout<<endl<<"--------------"<<endl;
for(int j=0;j<n;j++)
{
cout<<broj[j]<<endl;
}
return 0;
}
答案 5 :(得分:-7)
你可以自己写一些东西,但是真的应该使用qsort函数。