Cで選択ソートを実装する方法は?
公開: 2023-01-06選択並べ替えは、配列の最小の整数を見つけて、それを一番上の位置に割り当てることによって動作する別のアルゴリズムです。 最小の整数の位置の横にあるインデックスは、スキャンする必要がある次の配列を開始するために使用されます。
目次
C での選択ソートの例
最小数が 2 である [10,2,8,4,6] の配列を使用すると、最小数 2 が最初の位置に配置され、その後で配列が検索されます。 [2,10,8,4,6] のように。 次に、2 がすでに正しい位置にあるため、次に小さい数を使用します。 次に小さい数字は 4 で、2 番目の位置に配置されます。その後、配列は最終的にソートされるまで同様に検索されます。
C の選択ソートは、数値を昇順にソートします。 アルゴリズムを変更することで、数値を降順で並べることができます。Selection Sort は、C 以外の言語 ( Selection Sort C++や Selection Sort Python など) でも実行できます。
世界トップクラスの大学が提供するソフトウェア開発コースをオンラインで学びましょう。 エグゼクティブ PG プログラム、上級認定プログラム、または修士プログラムを取得して、キャリアを加速させましょう。
選択ソートアルゴリズム
- まず、セレクション ソートの初期要素を最小値に設定し、配列内の最小要素を検索して、セレクション ソート アルゴリズムの正しい手順を実行します。
- 最小要素が 2 番目の要素と比較されるようになりました。 2 番目の要素が最小値を下回った場合、それらを交換してから、3 番目の要素に最小値を割り当てます。
- それ以外の場合は、3 番目の要素に進み、それを最小値と比較します。 2 番目の要素が最初の要素を超える場合は、それを交換します。 このプロセスを最後のコンポーネントまで繰り返します。
- 各反復の後、最小値がソートされていないリストの先頭に到達したことがわかります。
- 反復ごとに、ソートされていないリストの最初のエントリからインデックス作成を開始します。 リストがソートされるか、すべてのコンポーネントが適切に配置されるまで、ステップ 1 から 4 を数回繰り返します。
ソフトウェア エンジニアリングに関する人気のコースと記事
人気番組 | |||
ソフトウェア開発のエグゼクティブ PG プログラム - IIIT B | ブロックチェーン証明書プログラム - PURDUE | サイバーセキュリティ証明書プログラム - PURDUE | コンピューター サイエンスの MSC - IIIT B |
その他の人気記事 | |||
米国のクラウド エンジニアの給与 2021-22 | 米国でのAWSソリューションアーキテクトの給与 | 米国のバックエンド開発者の給与 | 米国のフロントエンド開発者の給与 |
アメリカのウェブ開発者の給与 | 2022年のスクラムマスターインタビューの質問. | 2022年にサイバーセキュリティのキャリアを始めるには? | 工学部学生のための米国でのキャリアオプション |
次の各反復の例は、C での選択ソートのプロセスを詳細に理解するのに役立ちます–
反復 #1
私 [ ] = 8,5,2,6,4
最小値を設定 – 8
i 0と i 1を比較する
i 0 > i 1なので、最小値 = 5 に設定します。
- i 1と i 2を比較する
i 1 > i 2なので、最小値 = 2 に設定します。
- i 2と i 3を比較する
i 2 < i 3なので、最小値を 2 に設定します。
- i 2と i 4を比較する
i 2 < i 4なので、最小値を 2 に設定します。
2 はすべての要素の最小数です。i 0と i 2を交換する必要があります。
反復 #2
私 [ ]= 2,5,8,6,4
最小 5 を設定
- i 1と i 2を比較する
i 1 < i 2なので、最小値 = 5 に設定します。
- i 1と i 3を比較する
i 1 < i 3なので、最小値を 5 に設定
- i 1と i 4を比較する
繰り返しますが、i 1 < i 4 、最小値 = 4 に設定します。
4 は配列の最小要素であるため、 i 1と i 4を交換する必要があります。
反復 #3
私 [ ]= 2,4,8,6,5
最小 8 を設定
- i 2と i 3を比較する
i 2 > i 3なので、最小値 = 6 に設定します。
- i 3と i 4を比較する
i 3 > i 4なので、最小値 = 5 に設定します。
5 は配列の最小要素です。i 2と i 4を交換する必要があります。
反復 #4
私 [ ] = 2,4,5,6,8
最小 6 を設定
- i 3と i 4を比較する
i 3 < i 4であるため、最小値 = 6 に設定します。
最小値は正しい場所に配置されます。 したがって、スワッピングは発生しません。
C での選択ソートの例
// C での選択ソート
#include <stdio.h>
// 2 つの要素の位置を入れ替える関数
ボイドスワップ(int *a, int *b) {
int temp = *a;
*a = *b;
*b = 温度;
}
void selectionSort(int array[], int size) {
for (int step = 0; step < size – 1; step++) {
int min_idx = ステップ;
for (int i = ステップ + 1; i < サイズ; i++) {
// 降順でソートするには、この行で > を < に変更します。
// 各ループで最小要素を選択します。
if (array[i] < array[min_idx])
min_idx = i;
}
// min を正しい位置に置く
swap(&array[min_idx], &array[step]);
}
}
// 配列を出力する関数
void printArray(int array[], int size) {
for (int i = 0; i < サイズ; ++i) {
printf(“%d”, 配列[i]);
}
printf(“\n”);
}
// ドライバーコード
int main() {
int data[] = {20, 12, 10, 15, 2};
int size = sizeof(data) / sizeof(data[0]);
selectionSort(データ、サイズ);
printf(“昇順でソートされた配列:\n”);
printArray(データ、サイズ);
}
選択ソートの複雑度分析
入力 – n 個の入力項目が与えられます。
出力 –リストをソートするために必要なステップ数。
ロジック – n 個のアイテムが与えられた場合、最初のパスで n-1 回の比較、2 回目のパスで n-2 回の比較、3 回目のパスで n-3 回の比較などを行います。 したがって、比較の総数は次の式を使用して計算できます。
出力 –
(n+1) + (n+2) + (n+3) + (n+4) + …. +1
合計 = n(n-1)/2 つまり、O(n²)
セレクション ソート メソッドは、スワッピング用の一時変数用に追加のメモリ空間を必要とするため、O(n2) の時間計算量と O(1) の空間計算量を持ちます。
選択ソート時間複雑度分析
ベスト ケース:以前に並べ替えられた配列の場合、選択並べ替えメソッドのベスト ケースの時間計算量は O(n²) です。
平均ケース:項目がごちゃまぜに配置されている場合、つまり、昇順でも降順でもない場合、選択ソート アルゴリズムの平均ケース時間複雑度は O(n²) です。
最悪の場合:配列の降順を逆にして昇順にすると、最悪の場合の時間計算量は O(n²) になります。
選択並べ替え方法の時間的な複雑さは、3 つのシナリオのそれぞれで O(n²) です。 これは、適切に配置するために、各段階で最小限のアイテムを特定する必要があるためです。 配列全体をトレースすると、最小要素が見つかります。
結論
これで、「C での選択ソート」に関するブログ投稿を終了します。 Selection Sort C++や Selection Sort Python など、他の言語でも実行できることを理解する必要があります。 この記事が、C で要素をソートする方法を理解するのに役立つことを願っています。
選択の並べ替えは、プログラマーになる旅の唯一の部分ではありません。 専門的な学位を取得してソフトウェア開発のキャリアを大幅に向上させたい場合は、upGrad をご利用ください。 upGrad のフロントエンド開発 (JavaScript、HTML、CSS)、バックエンド (NoSQL-MongoDB)、およびマイクロサービスを習得した後、UpGrad のコンピューター サイエンス コースの理学修士号を取得できます。 IIIT バンガロール & LJMU 卒業生ステータスによって提供されるこのコースは、世界中の技術系巨人と共にソフトウェア エンジニア/フルスタック開発者としてのキャリアを確立するのに役立ちます。
このコースでは、Java、Spring、Hibernate などのツールの基本的な知識をカバーし、フルスタック開発スキルを強化して、注目に値する求人市場を探索します。
サインアップして詳細をご覧ください!
データ構造における選択ソートとはどういう意味ですか?
単純なソート アルゴリズムは選択ソートです。 リストは、このインプレース比較ベースの並べ替えプロセスで 2 つの半分に分割されます。左端の並べ替えられた部分と右端の並べ替えられていない半分です。 リスト全体は、最初はソートされていない半分にあり、ソートされた部分は空です。
Cのクイックソートとは何ですか?
クイックソートとして知られるソート アルゴリズムは、分割統治戦略に基づいています。 配列は、ピボット要素を選択することにより、サブ配列 (配列から選択された要素) に分割されます。
Cの双方向選択とは何ですか?
ブール条件が true の場合のセットと false の場合のセットの 2 つのステートメント セットが存在する場合、これは双方向選択 (if/else) と呼ばれます。