C ++のソートソートノートの使い方]

ヘッダ
の#include <アルゴリズム>
三つのパラメータ
ソート(BUF、BUF + N、CMP);
1)BUF:Nの合計をソートするソートされた配列、配列要素された最初のアドレス。

2)BUF + N:ここでキーは、このパラメータはアドレスの配列の最後の要素であるため、ソートされないが、最後のアドレス要素の後。簡単に言えば、重要性は左右開閉2つのパラメータで表される[BUF、BUF + N)、すなわち、として理解することができます。

3)CMP:ソート方法、このパラメータはデフォルトは昇順に省略され、省略することができます。あなたは、自分の下に、特定の参照例を達成するために、比較関数を書くことができます。


1)のパラメータが省略され、デフォルトのソートの昇順

INT [6] = {2,9,8,4,6,7}、
ソート(A、A + 6);
ソート:2,4,6,7,8,9

2)比較関数

//以下<整数>()

ブールcmp_up(int型A、int型B )// ソート昇順
{
    戻りA <B;
}
 //大<整数>()
ソート降順// BOOLのcmp_down(INT、INT B)を
{
    戻りA> Bを;
}
 
//メソッド呼び出し
ソート(A、A + 6、cmp_up)、
ソート(A、A + 6、cmp_down。)。

3)構造をソートします

ソート出力番号を結果

#include <iostream>
#include <algorithm>
using namespace std;
struct stu{
    int num;
    int score;
};
bool cmp(stu t1,stu t2){
    return t1.score > t2.score;
}
int main(){
    int n;
    stu a[101];
    cin >> n;
    for(int i = 0;i < n;i++){
     	cin >> a[i].score;
        a[i].num = i+1;
    }
    sort(a,a+n,cmp);
    for(int i = 0;i < n;i++){
        if(i == 0)
        	cout << a[i].num;
        else
            cout << " " << a[i].num;
    }
    
    return 0;
    
}


要約
C ++ 1)ソート()は複雑性O(nlogn)に行くために、同様のソート方法のクイックあります。、のqsortよりも、この機能をとても強いプッシュを使用する方が簡単。

2)2番目の引数が最後の要素のアドレスではないことに注意してください、そうでない場合は最後の要素は、ソートに参加しません。

3)比較関数は、実際に記述する必要はありませんが、C ++標準ライブラリの提供テンプレートベースの比較関数オブジェクトの束が、ここでは省略されて、見つけるために行くことができます興味を持っています。


 

公開された38元の記事 ウォン称賛7 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_41514794/article/details/104682690