私はこの配列を持っています:
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モードで配列を並べ替える方法
配列を昇順でソートするには、次を使用します。
#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
カスタム比較ファンクタを std :: sort 関数に渡すことができます。
まず、投稿時の配列の割り当てが単なるエラーだったと思いますが、すべての数値が同じメモリ位置に割り当てられています。ソートするものは何もありません。
その後、 sort() 関数を使用できます。リンクされた例は、それを使用する簡単な方法を示しています。要素の比較方法を指定する、使用されていない3番目のパラメーターがあることに注意してください。デフォルトでは、パラメーターを指定しない場合は「より小」を使用するため、昇順で並べ替えられます。これを変更して、「より大きい」コンパレーターを指定し、降順ソートを取得します。
#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つの変数を入れ替えることができます。
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つの比較関数を使用できます。
関数本体に複雑な式があり、i
とj
が複数回含まれる場合は、代わりにパラメーターリストでi
とj
を交換する方が簡単です。本文のすべてのi
およびj
の:
bool myfunction (int j,int i) { return (i<j); }
同じことが当てはまります