C++排序-----sort函数

大一期末模拟题有一道输入三个数字排序的题目,当时废了好大功夫才写出来,后来在百度查到有专门的排序函数,如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;
}

猜你喜欢

转载自blog.csdn.net/AsukaShin/article/details/85328385