MENU

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

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

目次から探す

選択ソートの実装方法

選択ソートは、配列の要素を昇順または降順に並び替えるためのアルゴリズムです。

以下では、選択ソートの基本的な手順、配列の要素を比較する方法、配列の要素を交換する方法について説明します。

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

選択ソートの基本的な手順は以下の通りです。

  1. 未ソート部分の先頭から最小値(または最大値)を探します。
  2. 最小値(または最大値)を未ソート部分の先頭の要素と交換します。
  3. 未ソート部分の先頭を次の要素に移動します。
  4. 未ソート部分がなくなるまで、手順1から手順3を繰り返します。

配列の要素を比較する方法

選択ソートでは、配列の要素を比較して最小値(または最大値)を見つけます。

比較するためには、以下のような方法を使用します。

  1. 比較対象の要素を選択します。
  2. 比較対象の要素と現在の最小値(または最大値)を比較します。
  3. もし比較対象の要素が最小値(または最大値)よりも小さい(または大きい)場合、最小値(または最大値)を更新します。

配列の要素を交換する方法

選択ソートでは、最小値(または最大値)を見つけた後、その要素を未ソート部分の先頭の要素と交換します。

要素を交換するためには、以下のような方法を使用します。

  1. 交換する要素のインデックスを記憶します。
  2. 交換する要素と未ソート部分の先頭の要素を交換します。

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

以下では、選択ソートの関数の定義、メイン関数での選択ソートの呼び出し、実行結果の確認について説明します。

選択ソートの関数の定義

選択ソートの関数を定義するためには、以下の手順を実行します。

  1. 選択ソートの関数のプロトタイプ宣言を行います。
  2. 配列の要素を比較し、最小値(または最大値)を見つけます。
  3. 最小値(または最大値)を未ソート部分の先頭の要素と交換します。
  4. 未ソート部分の先頭を次の要素に移動します。
  5. 未ソート部分がなくなるまで、手順2から手順4を繰り返します。

メイン関数での選択ソートの呼び出し

メイン関数で選択ソートの関数を呼び出すためには、以下の手順を実行します。

  1. 配列を定義し、要素を初期化します。
  2. 選択ソートの関数を呼び出し、配列を昇順または降順に並び替えます。

実行結果の確認

選択ソートを実行した後、配列の要素が昇順または降順に並び替えられていることを確認します。

実行結果の例を示します。

#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[minIndex];
        arr[minIndex] = arr[i];
        arr[i] = temp;
    }
}
int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr)/sizeof(arr[0]);
    
    printf("ソート前の配列: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    selectionSort(arr, n);
    
    printf("\nソート後の配列: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}
ソート前の配列: 64 25 12 22 11
ソート後の配列: 11 12 22 25 64

選択ソートの基本的な手順やプログラム例を理解し、自身のプログラミングに活かしてみてください。

目次から探す