どうも、ちょげ(@chogetarou)です。
配列(array)を降順(大きい順)にソートして並び替える方法を紹介します。
方法
配列(array)を降順(大きい順)にソートして並び替えるには、for文を使います。
まず、for文で配列のインデックスをループします。
次に、ループ処理で、配列のループされていない範囲のインデックスをfor文でループします。
2つ目のfor文のループ処理で、「2つ目のfor文のループ変数のインデックスの要素」より「1つ目のfor文のループ変数のインデックスの要素」が小さい場合に条件分岐します。
そして、条件を満たす場合に、「1つ目のfor文のループ変数のインデックスの要素」と「2つ目のfor文のループ変数のインデックスの要素」を入れ替えます。
//myArray=対象の配列
int size = sizeof(myArray) / sizeof(myArray[0]); //配列の要素数
int x;
for (int i = 0; i < size; ++i) //配列のインデックスをループ
{
for (int j = i + 1; j < size; ++j) //配列でループされていない範囲のインデックスをループ
{
if (myArray[i] < myArray[j])
{
//要素の入れ替え
x = myArray[i];
myArray[i] = myArray[j];
myArray[j] = x;
}
}
}
上記の2つのfor文は、対象の配列を降順にソートして並び替えます。
使用例
#include <stdio.h>
int main(void){
int myArray[6] = { 10, 2, 5, 7, 9, 1 };
int size = sizeof(myArray) / sizeof(myArray[0]);
int x;
for (int i = 0; i < size; ++i)
{
for (int j = i + 1; j < size; ++j)
{
if (myArray[i] < myArray[j])
{
x = myArray[i];
myArray[i] = myArray[j];
myArray[j] = x;
}
}
}
for (int i = 0; i < size; i++) {
printf("%d ", myArray[i]);
}
return 0;
}
出力:
10 9 7 5 2 1
コメント