ソートは、すべての IT エンジニアと開発者にとって不可欠な知識スキルです。コーディング面接に合格するだけでなく、アルゴリズム自体も理解する必要があります。さまざまなソート アルゴリズムは、アルゴリズムの設計がプログラムの複雑さ、速度、効率に大きな影響を与える可能性があることを示す良い例です。 面接でよく聞かれる最も一般的なソートアルゴリズムのトップ 5 を見て、それらを Python で実装する方法を見てみましょう。 1. バブルソート バブルソートは、ソートの仕組みを明確に示しながらもシンプルで理解しやすいため、入門レベルの CS コースで最もよく教えられているソートです。バブルソートはリストを順に進み、隣接する要素のペアを比較します。要素の順序が間違っている場合は、入れ替えられます。リストがソートされるまで、リストのソートされていない部分の走査を繰り返します。バブルソートはリストのソートされていない部分を繰り返し通過するため、最悪の場合の複雑さは O(n²) になります。
2. 選択ソート 選択ソートも非常に単純で、バブルソートよりも優れています。 2 つから選択する必要がある場合は、デフォルトの「右選択ソート」を使用するのが最適です。選択ソートを使用して、入力リスト/配列を 2 つの部分に分割します。1 つはソートされた項目のサブリスト、もう 1 つはリストの残りを構成する残りの項目のサブリストです。 まず、ソートされていないサブリスト内の最小の要素を見つけて、それをソートされたサブリストの最後に配置します。したがって、最小のソートされていない要素を取得し、ソートされた順序でソートされたサブリストに格納し続けます。リストが完全にソートされるまでこのプロセスが繰り返されます。
3. 挿入ソート 挿入ソートはバブルソートや選択ソートよりも高速で、よりシンプルであると言えます。カードゲームをプレイするときと同じように、カードをシャッフルするプロセスは挿入ソートの繰り返しです。ループの各反復で、挿入ソートは配列から 1 つの要素を削除します。次に、他のソートされた配列内でその要素が属する位置を検索し、そこに挿入します。入力要素がなくなるまでこのプロセスを繰り返します。
4. マージソート マージソートは分割統治アルゴリズムの完璧な例です。このアルゴリズムを使用するには、主に次の 2 つの手順だけが必要です。 (1) ソートされていないリストを、それぞれが 1 つの「ソートされていない」要素を持つ N 個のサブリストになるまで分割し続けます。ここで、N は元の配列の要素数です。 (2)繰り返しマージ、つまり、2つのサブリストを一度にマージして、すべての要素がソートされた配列に完全にマージされるまで、新しいソートされたサブリストを生成する。
5. クイックソート クイックソートも、マージソートと同様に分割統治アルゴリズムです。少し複雑ではありますが、ほとんどの標準実装ではマージソートよりもはるかに高速に実行され、最悪の場合でも O(n²) の複雑度に達することはほとんどありません。主なステップは 3 つあります。 (1)まず配列からピボットと呼ばれる要素を選択します。 (2)軸より小さい要素はすべて軸の左に移動し、軸より大きい要素はすべて軸の右に移動します。これをパーティション操作と呼びます。 (3)前の軸の値より小さいか大きい値を持つ要素の各サブ配列に対して、上記2つの手順を再帰的に適用する。
- 終わり - 多くの学生は、Python を学習する際にさまざまなアルゴリズムの問題に遭遇します。簡単に理解できるものもありますが、学習に時間と労力を要するものもあります。 この記事の 5 つのソート アルゴリズムは、Python 初心者に適しています。ほとんどのベテラン プログラマーはすでにソート アルゴリズムに精通しており、面接の過程でそれらを学習することを余儀なくされます。 |
<<: Python コーディング面接の前に解くべき 10 個のアルゴリズム
>>: 教師あり学習、教師なし学習、強化学習とは何ですか?ついに誰かが明らかにした
OpenAI がまたしてもビッグトリックを公開しました!簡単に言えば、サム・アルトマンは市場にあるす...
AI は時間の経過とともにさらに賢くなり、パワーを増していきます。私たちの多くにとって、人工知能 ...
夏休みがやってきました。旅行が必要です。彼/彼女にサプライズをあげたいですか?通常、私たちの旅行は自...
[[412426]]今日は、Github 上の非常に強力な JavaScript アルゴリズムとデ...
イーロン・マスク氏の人工知能企業xAIは最近、GroKと呼ばれる人工知能チャットボットをリリースした...
アバターにマスクとゴーグルを追加するプロジェクトアドレス: https://github.com/E...
人工知能監視システムに対する懸念から、研究者たちはそれを標的とするツールの開発に取り組んでいる。最近...
AI の成熟度が増すということは、あらゆる規模の組織が AI をより簡単に使用して、重大で複雑な問題...
新世代の JVM ガベージ コレクション アルゴリズムをご存知ですか? ここで皆さんにご紹介しましょ...
[[255839]] BI中国語ウェブサイトが1月18日に報じた。マイクロソフトのCEOサティア・ナ...
分析するオムニチャネルコマースが拡大するにつれ、広告分析の世界は劇的な変化を遂げるでしょう。オンライ...