大一期末模拟题有一道输入三个数字排序的题目,当时废了好大功夫才写出来,后来在百度查到有专门的排序函数,如sort。这样以来就不用什么交换法,排序法了。
排序关键字:sort(begin,end,xx)
begin: 要排序的数组的起始地址;
end:要排序的数组的结束地址;
xx:排序方法,可以不写,默认为从小到大;
头文件: algorithm
题目:输入几个数,把他们排序。
从小到大
传统方法:
#include <iostream>
using namespace std ;
int main()
{
int a, b, c,t;
cin >> a >> b >> c ;
if ( a > b )
{
t = a;
a = b;
b = t;
}
if( a > c )
{
t = a;
a = c;
c = t;
}
if( b > c )
{
t = b;
b = c;
c = t;
}
cout << a <<'\t'<< b << '\t' << c << endl;//从小到大排序;
return 0 ;
}
新方法:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a [10];
for(int i = 0; i < 10 ; i++)
{
cin >> a[i];
}
sort(a,a+10);//注意这个地方;
for(int i = 0; i < 10 ; i++)
{
cout << a[i] << '\t';
}
return 0;
}
从大到小
这时候需要对sort的第三个参数做文章,也即是将第三个填上complare
而且,还要定义一个函数!!!!!!
bool complare(int a, int b)
{
return a > b;
}
所以,从大到小的程序就是:
#include <iostream>
#include <algorithm>
using namespace std;
bool complare(int a, int b)
{
return a > b;
}
int main()
{
int a [10];
for(int i = 0; i < 10 ; i++)
{
cin >> a[i];
}
sort(a,a+10,complare);
for(int i = 0; i < 10 ; i++)
{
cout << a[i] << '\t';
}
return 0;
}