如果我有用户输入10个随机数,我想从最小到最大的顺序排列,使用最基本的C++语言来做这件事的最好方法是什么。C++排序从最小到最大的数字
回答
#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;
}
你可以自己写一些东西,但真的应该使用qsort函数。
恰恰相反。在C++中很少(从来没有?)使用'qsort'的好理由。 – 2011-02-24 08:20:36
如果问题标记为C(而不是C++) – 2011-02-24 08:23:14
来阐述@Jerry的评论,那么你应该是正确的,而应该使用'std :: sort'。 – jalf 2011-02-24 08:23:44
std::vector<int> numbers;
// get the numbers from the user here.
std::sort(numbers.begin(), numbers.end());
@Jerry:为什么不使用维持排序的结构? – 2011-02-24 08:50:29
@Matthieu:最后一次排序可能会更快。 – 2011-02-24 08:53:36
@kotlinski:虽然我同意这个观点,并且对小输入集合使用'vector',但它看起来还不成熟!渐近性能相当于O(N log N),所以你需要在这里考虑常量因子,代价是复杂的代码。 – 2011-02-24 09:23:51
这取决于您的要求。如果你只是想对它们进行排序,并且速度只是中等的关注,那么插入排序对于这样一个小的n值是很好的(10)。快速实施(从头开始),适用于小型套装尺寸。
使用维护的结构顺序: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
(注:不限制参数的个数)
'。 – 2011-02-24 12:51:54
@kotlinski:C++ 0x新'基于范围的'语句(** 6.5.4 [stmt.ranged] **),我不知道是否有编译器已经实现它。 – 2011-02-24 13:42:17
//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;
}
尝试添加一些解释 – 2016-02-05 20:50:53
所以这只是旧学校程序只是如果,为和goto loops..so这个程序的核心是在这个“我”for循环,它取代了数组上的不同索引上的数字..min是可变的我们使用它来更容易地“传输”这些值。如果您有视觉工作室或某些可以一步一步(逐行)运行它的程序,那么在我所有的建议中都会这样做,这将有助于您理解这一概念。 ..它有点长,但有了这个,你将开发你的编程思维方式 – 2016-02-05 21:03:43
- 1. 从最小到最大排序数组
- 2. 从最小到最大排序
- 3. 使用JOptionPane从最小到最大排序4个数字
- 4. 排序三个数字阵列从最小到最大
- 5. 按列排序数据从最小到最大或按字母顺序排列
- 6. 如何排序从最大到最小的整数列表
- 7. 从关系代数中的最大到最小排序
- 8. 如何轻松地在Visual C#中从最大到最小的数组排序?
- 9. 排序Perl的哈希从最大到最小
- 10. 有用户排序列表从最小到最大
- 11. 排序从最大到最小根据出现在一列
- 12. 重新排序下面效率从最小到最大
- 13. R - 从最大到最小
- 14. .NET从最大到最小
- 15. 选择排序 - 最小/最大索引
- 16. 如何从Pandas Python中的最大到最小的groupby数据进行排序
- 17. 最小/最大字符数
- 18. 创建从最大排序到最小排列的索引列表
- 19. 期待从最小到最大的排序数组删除重复项
- 20. 如何在数组中找到最大和最小数字c
- 21. 从Firebase以最大到最小的顺序检索数据
- 22. 排序从最高到最低的数字列表
- 23. 阵列的最大和最小数字
- 24. 最大和最小的数字。 python
- 25. 创建从最小量到最大量组的排序按多列
- 26. 从C#中的一系列数字中获取最小值和最大值,无需排序
- 27. 在排序数组中找到小于x的最大值
- 28. C程序将不计算最小和最大(大和小)
- 29. 如果TreeSet安排从最旧到最新的数据,他们将从最新到最旧的数据排序。
- 30. 重新排列的阵列 - 最小,最大,第二最小,第二最大,
提示: http://www.cplusplus.com/referen ce/algorithm/sort/ – 2011-02-24 08:18:32