1. バブルソートバブル ソートは、C 言語のシンプルな初級レベルのソート アルゴリズムです。ソートする要素の列を繰り返し訪問し、隣接する 2 つの要素を順番に比較し、順序が間違っている場合はそれらを交換します。交換する必要がある隣接する要素がなくなるまで、つまり要素列がソートされるまで、チェックと比較を繰り返します。このアルゴリズムの名前の由来は、水の泡が最終的に上に浮かぶように、小さい (大きい) 要素が交換を通じてゆっくりとシーケンスの上部 (昇順または降順) に「浮かぶ」ため、「バブル ソート」という名前が付けられています。 アルゴリズムの説明 1. 隣接する要素を比較します。最初の値が2番目の値より大きい場合は、それらを交換します 2. 隣接する要素の各ペアに対して、最初のペアから最後のペアまで同じ操作を実行し、最後の要素が最大の数になるようにします。 3. 最後の要素を除くすべての要素に対して上記の手順を繰り返します。 4. ソートが完了するまで手順1~3を繰り返します。 ソースコード
運用結果
2. 選択ソート選択ソートは、シンプルで直感的なソート アルゴリズムです。まず、ソートされていないシーケンス内で最小 (最大) の要素を検索し、ソートされたシーケンスの先頭に格納します。次に、残りのソートされていない要素から最小 (最大) の要素を検索し続け、ソートされたシーケンスの末尾に配置します。すべての要素がソートされるまでこれを繰り返します。 アルゴリズムの説明 1. 初期状態では、すべてのデータは無秩序領域に属し、秩序領域は空である。 2. 順序付けされていない領域から最小の要素を選択し、順序付けされていない領域の最初の要素と交換します。 3. 順序なし領域が空になるまで、順序なし領域の次の要素から手順2を繰り返します。 ソースコード
前のアルゴリズムのbubble_sortの例はselection_sortに置き換えることができ、実行結果は同じです。 3. 挿入ソート挿入ソート アルゴリズムは、順序付けられたシーケンスを構築することによって機能します。ソートされていないデータの場合、ソートされたシーケンス内で後ろから前へスキャンし、対応する位置を見つけて挿入します。 アルゴリズムの説明 1. 最初の要素から始めて、要素はソートされているとみなすことができます 2. 次の要素を取り出し、ソートされた要素の順序で後ろから前へスキャンします。 3. 要素(ソート済み)が新しい要素より大きい場合は、要素を次の位置に移動する 4. ソートされた要素が新しい要素以下になる位置が見つかるまで手順 3 を繰り返し、その位置に新しい要素を挿入します。 5. 手順2~4を繰り返します ソースコード
4. 標準ライブラリ関数 qsort前の 3 つのソート アルゴリズムは、単一の要素のみをソートします。ただし、実際のアプリケーションでは、MAC、名前、暗号化情報、信号強度などの WiFi 情報構造の配列など、大きな構造が特定の値に基づいてソートされます。WiFi 情報は、情報強度に従ってソートされます。各データ交換は、2 つのメモリ コピーを意味します。このシナリオでは、選択ソートの方がわずかに優れています。 車輪の再発明に比べると、C言語の標準ライブラリ関数の方が適切かもしれません。qsort関数はC言語に付属するソート関数で、 関数プロトタイプ
base - ソートする配列の最初の要素へのポインタ nitems - 配列内の要素数 size - 配列内の各要素のサイズ(バイト単位) compar - この関数に基づいて 2 つの要素を比較します 戻り値: 値 値は返されません デメリット: 複数の繰り返し値を持つ配列では効率が低く、不安定になる 例
その効果は前の 3 つのアルゴリズムと同じであり、特定の要素値に基づいて構造全体をソートするように拡張でき、信号強度によって Wi-Fi 情報をソートするという以前の要件を満たします。
運用結果
5. まとめ最適なソートアルゴリズムはありません。どの方法を使用するかは、ソートするデータのサイズと種類、および元のデータが大まかに順序付けられているかどうかによって決まります。ニーズに合わせて適切なアルゴリズムを選択できます。 |
<<: 新しい機械学習システムがロボットに社会的なスキルを与える
まず、技術発展の観点から見ると、人工知能技術の発展は避けられません。現在、クラウドコンピューティング...
[51CTO.com クイック翻訳] Heroku Cloud は、Web 開発者や機械学習愛好家の...
図1: 負荷分散アルゴリズムの改善が必要[[91541]]図2: 開発者対テスター、非常に奇妙な図[...
[[374390]]人工知能 (AI) は、組織によって競争上の優位性を獲得するための重要なテクノロ...
[[429444]]この記事はWeChatの公開アカウント「Computer World」から転載...
今日のインターネット アプリケーション開発では、可用性の高い分散システムを構築することが、システムの...
[[189573]]今日の目標は、Caffe を使用してディープラーニング トレーニングの全プロセス...
産業用ロボットの世界では、イノベーションのペースが加速し続けており、毎年、製造、自動化、作業の方法を...
[[417224]] 21 世紀以降、人工知能は世界中で新たな科学技術革命と産業変革を主導し、人々の...
英国のメディア組織Tortoise Mediaは最近、2023年の世界AI指数ランキングを発表しまし...
16 年前、ビル・ゲイツはスパムの問題は 2006 年までに解決すると約束しました。 2020 年...
データセンター内外を問わず、自動化に境界はないと考えるのは簡単です。 AI がデータ センターの運用...