MENU

【C言語】選択ソートで配列の値を降順に並び替える方法

この記事では、選択ソートというアルゴリズムを使って、C言語で配列の値を降順に並び替える方法を解説します。

目次から探す

選択ソートの実装方法

選択ソートは、配列の要素を順番に比較し、最小値や最大値を見つけて適切な位置に移動させることで、配列をソートするアルゴリズムです。

以下では、選択ソートの基本的な手順と、配列の値を降順に並び替えるためのアルゴリズムの変更点について説明します。

選択ソートの基本的な手順

  1. 配列の先頭から順番に要素を選択します。
  2. 選択した要素と、それ以降の要素を比較し、最小値や最大値を見つけます。
  3. 最小値や最大値を選択した要素と交換します。
  4. 未ソートの部分配列に対して、上記の手順を繰り返します。
  5. ソートが完了するまで、上記の手順を繰り返します。

配列の値を降順に並び替えるためのアルゴリズムの変更点

通常の選択ソートでは、最小値を見つけて適切な位置に移動させることで、配列を昇順にソートします。

しかし、配列の値を降順に並び替えるためには、アルゴリズムに変更を加える必要があります。

具体的には、最小値ではなく最大値を見つけて適切な位置に移動させるようにします。

これにより、配列の値を降順にソートすることができます。

選択ソートのプログラム例

以下では、選択ソートの基本的な実装例と、配列の値を降順に並び替えるプログラム例を示します。

選択ソートの基本的な実装例

#include <stdio.h>
void selectionSort(int arr[], int n) {
    int i, j, minIndex, temp;
    
    for (i = 0; i < n-1; i++) {
        minIndex = i;
        
        for (j = i+1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        
        temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}
int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    selectionSort(arr, n);
    
    printf("Sorted array: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

上記のプログラムは、選択ソートを用いて配列を昇順にソートする例です。

配列 {64, 25, 12, 22, 11} を選択ソートでソートし、結果を表示しています。

配列の値を降順に並び替えるプログラム例

#include <stdio.h>
void selectionSortDescending(int arr[], int n) {
    int i, j, maxIndex, temp;
    
    for (i = 0; i < n-1; i++) {
        maxIndex = i;
        
        for (j = i+1; j < n; j++) {
            if (arr[j] > arr[maxIndex]) {
                maxIndex = j;
            }
        }
        
        temp = arr[i];
        arr[i] = arr[maxIndex];
        arr[maxIndex] = temp;
    }
}
int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    selectionSortDescending(arr, n);
    
    printf("Sorted array in descending order: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

上記のプログラムは、選択ソートを用いて配列を降順にソートする例です。

配列 {64, 25, 12, 22, 11} を選択ソートで降順にソートし、結果を表示しています。

以上が、選択ソートで配列の値を降順に並び替える方法についての解説とプログラム例です。

選択ソートはシンプルなアルゴリズムですが、効率的なソート方法ではありません。

大量のデータをソートする場合は、他のソートアルゴリズムを検討することをおすすめします。

目次から探す