C言語でのソート方法は何ですか?

C言語には、配列やリストのソートを実現するために複数のソートアルゴリズムがあります。一般的なソートアルゴリズムは以下の通りです:

  1. バブルソート:隣接する要素を比較し、より大きな要素を徐々に末尾に交換することで、時間計算量はO(n^2)になります。
  2. バブルソート関数は、与えられた配列を昇順に並び替える。
  3. 挿入ソート:配列をソート済み部分と未ソート部分に分け、未ソート部分から要素を選んでソート済み部分の適切な位置に挿入する方法。時間計算量はO(n^2)。
  4. int insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) { int key = arr[i]; int j = i – 1; while (j >= 0 && arr[j] > key) {
    arr[j+1] = arr[j];
    j–;
    }
    arr[j+1] = key;
    }
    }
  5. 選択ソート:未ソート部分から最小(または最大)の要素を選択し、それを未ソート部分の最初の要素と交換します。時間計算量はO(n^2)です。
  6. 配列を選択ソートする関数を定義します。
  7. クイックソート:基準要素を選択し、基準より小さい要素を左側に移動し、基準より大きい要素を右側に移動させ、その後左右の部分を再帰的にクイックソートし、時間計算量はO(nlogn)となります。
  8. voidクイックソート(int arr []、int low、int high){
    if(low <high){
    int pivot = partition(arr、low、high);
    quickSort(arr、low、pivot-1);
    quickSort(arr、pivot + 1、high);
    }
    }int partition(int arr []、int low、int high){
    int pivot = arr [high];
    int i = low-1;
    for(int j = low; j <high; j ++){
    if(arr [j] <pivot){
    i ++;
    int temp = arr [i];
    arr [i] = arr [j];
    arr [j] = temp;
    }
    }
    int temp = arr [i + 1];
    arr [i + 1] = arr [high];
    arr [high] = temp;
    return i + 1;
    }
  9. マージソート:配列を2つのサブ配列に分割し、それぞれのサブ配列に再帰的にマージソートを適用し、それから2つの並んだサブ配列を1つの並んだ配列にマージする。時間計算量はO(nlogn)。
  10. 配列の中の要素をマージするメソッドと、それを使って入力された配列をマージソートするメソッドを示します。
bannerAds