この記事はWeChatの公開アカウント「roseduanの執筆場所」から転載したもので、著者はroseduanです。この記事を転載する場合は、roseduanが執筆しているローカルの公開アカウントまでご連絡ください。 Rosedb ビデオを録画するときに、穴を掘って、一般的なデータ構造とアルゴリズムを Go 言語で実装すると言いました。すでにそのような記事はたくさんありますが、Rose 兄弟?? 埋めなければならない穴があります! 勇気を出してこのシリーズを書くしかないので、これを Go 言語アルゴリズムの美しさと呼びましょう! ソートは非常に古い問題であり、コンピュータ分野における古典的なアルゴリズム問題の 1 つです。次の記事では、一般的なソート アルゴリズムについて説明します。 完全なコードを添付し、関連する Leetcode の質問をいくつかお勧めします。これらの質問は、アルゴリズムの知識を学習して強化するだけでなく、面接でより快適に過ごすのにも役立ちます。 この記事では、バブルソート、選択ソート、挿入ソートという 3 つの基本的なソートアルゴリズムを紹介します。 バブルソートバブルソートは比較と交換に基づいています。基本的な考え方は、データを走査することです。隣接する要素のサイズが異なる場合、それらの位置が交換され、データが完全に順序付けられるまでこのサイクルが繰り返されます。 下の図に示すように、テストデータ -2 45 0 11 -9 があります。 最初のトラバースでは、データ内の最大値 45 が末尾に移動され、次に 45 以外のデータが再度トラバースされて最大値が 45 の前に移動します。最後の要素を走査した後、データは順序どおりになります。 次の図は、バブルソートのプロセスをより直感的に示しています。 コードは次のとおりです。
ここで、小さな最適化ポイントがあります。データが元々 1 3 4 5 6 のように順序付けられている場合、一度走査した後、交換するデータがないことがわかります。早期に終了して、走査を続ける必要はありません。コードは次のように最適化できます。
バブルソート関連の複雑さ:
選択ソート選択ソートも理解しやすいです。順序付けられていない配列の場合、配列内の最小値を毎回検索し、それを最初の要素と交換します。 下の図に示すように、テストデータは 20 12 10 15 2 です。最初のトラバーサルで見つかった最小値は 2 です。 そして、それを配列の最初の要素と交換します。 次に、残りのデータで最小値を探し続け、それを配列の 2 番目の要素と交換し、最後のデータまでこのサイクルを繰り返して、配列全体を順序付けます。 次のアニメーションは、選択ソートのプロセス全体を理解するのに役立ちます。 コード実装:
選択ソート関連の複雑さ:
挿入ソートカードゲームをしていた頃を思い出してください。私たちはどのようにして手札のカードを並べたでしょうか。新しいカードが来たら、すでに手札にあるカードの中から適切な位置を見つけて、それを差し込みます。 挿入ソートでも同じことが言えます。挿入ソートでは、配列内の各データを順に走査し、適切な位置に挿入します。次のアニメーション画像は、このプロセスをより鮮明に示しています。 コードは次のように実装されます。
挿入ソート関連の複雑さ:
注: 完全なコードを Github アドレスに置きました: https://github.com/roseduan/Go-アルゴリズム |
<<: 生体認証技術丨「ブラックテクノロジー」で体のパスワードを解読
>>: 北京大学の研究者らは、今回AIが「平らになる」理由を発見した。それはすべてデータセットのせいだ
今日の物語の主人公は、サンジーヴ・アローラとアニルド・ゴヤルという二人の科学者です。アローラ氏はプリ...
Google を含む多くの企業が、人間の寿命を延ばす方法を研究しています。たとえ何百年も長く生きられ...
ハイパースケーラーとクラウド プロバイダーがインフラストラクチャの計画を検討する場合、まず全体的な動...
[[340767]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
【51CTO.comより引用】無人スーパーマーケットが誕生し、ヒューマノイドロボットがインタビュー...
[[437809]]動的視覚推論、特にオブジェクト間の物理的な関係についての推論は、コンピューター ...
[[192829]]図1: データサイエンティストが最もよく使用するアルゴリズムトップ10すべてのア...
北京冬季オリンピックの開会式では、人工知能、5G、クラウドコンピューティングなど数多くの最新技術が活...
かつてはSFの世界の話のように思われていた人工知能(AI)という言葉は、今や現実のものとなり、私たち...
COVID-19 は世界中の人々の日常生活のあり方を変えましたが、実店舗ほどその影響を痛切に感じてい...
この記事の主な内容:序文DBSCAN クラスタリング アルゴリズムパラメータ選択DBSCANアルゴリ...
1. 概要大規模言語モデル (LLM) の急速な発展に伴い、LLM が人工知能業界の発展に与える影...