web-dev-qa-db-ja.com

ASCおよびDESCモードでC ++配列を並べ替える方法

私はこの配列を持っています:

array[0] = 18;
array[1] = -10;
array[2] = 2;
array[3] = 4;
array[4] = 6;
array[5] = -12;
array[6] = -8;
array[7] = -6;
array[8] = 4;
array[9] = 13;

c ++でasc/descモードで配列を並べ替える方法

13
cpp_best

配列を昇順でソートするには、次を使用します。

#include <algorithm>

int main()
{
   //...
   std::sort(array, array+n); //where n is the number of elements you want to sort
}

降順に並べ替えるには、

#include <algorithm>
#include <functional>  

int main()
{
   //...
   std::sort(array, array+n, std::greater<int>());
}

HTH

45
Armen Tsirunyan

カスタム比較ファンクタを std :: sort 関数に渡すことができます。

まず、投稿時の配列の割り当てが単なるエラーだったと思いますが、すべての数値が同じメモリ位置に割り当てられています。ソートするものは何もありません。

その後、 sort() 関数を使用できます。リンクされた例は、それを使用する簡単な方法を示しています。要素の比較方法を指定する、使用されていない3番目のパラメーターがあることに注意してください。デフォルトでは、パラメーターを指定しない場合は「より小」を使用するため、昇順で並べ替えられます。これを変更して、「より大きい」コンパレーターを指定し、降順ソートを取得します。

2
Erik Noren
#include <iostream>
#include <stdlib.h>
using namespace std;

int main (int argc, char *argv[])
    {
        int num[10]={18,-10,2,4,6,-12,-8,-6,13,-1};
        int temp;

        cout << "Ascending Sort : \n\n";

        for(int i=0; i<=10; i++)
            {
                for(int j=i+1; j<=10; j++)
                    {
                        if(num[i]>num[j])
                            {
                                temp=num[i];
                                num[i]=num[j];
                                num[j]=temp;
                            }
                    }
                cout << num[i] << "\n";
            }

        cout << "\nDescending Sort : \n\n";

        for(int i=0; i<=10; i++)
            {
                for(int j=i+1; j<=10; j++)
                    {
                        if(num[i]<num[j])
                            {
                                temp=num[j];
                                num[j]=num[i];
                                num[i]=temp;
                            }
                    }
                cout << num[i] << "\n";
            }

    return 0;
}
2
love

一般に、2つの変数を入れ替えることができます。

http://www.cplusplus.com/reference/algorithm/sort/

変化する

bool myfunction (int i,int j) { return (i<j); }

bool myfunction (int i,int j) { return (j<i); }

結果を別の名前に変更して、結果を昇順または降順にする必要がある場合に使用する2つの比較関数を使用できます。

関数本体に複雑な式があり、ijが複数回含まれる場合は、代わりにパラメーターリストでijを交換する方が簡単です。本文のすべてのiおよびjの:

bool myfunction (int j,int i) { return (i<j); }

同じことが当てはまります

http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/

1
nonopolarity