1. 程式人生 > >C++排序-----sort函式

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;
}