ソートは、すべての 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 個のアルゴリズム
>>: 教師あり学習、教師なし学習、強化学習とは何ですか?ついに誰かが明らかにした
先月26日、GoogleはarXivに「電子健康記録のためのスケーラブルで正確なディープラーニング」...
[[269803]]最近、研究者たちはニューラルネットワークに基づく新しいアルゴリズムを使用して量子...
人類の文明の歴史は、私たち自身を超えるための道具を絶えず生み出してきた歴史です。このトラックでは、ほ...
ABIリサーチは、ドローン市場は今後10年間で大きく成長し、2030年までに920億ドルの価値に達す...
マルチモーダル生成型人工知能 (GenAI) は、汎用人工知能の実現に向けた次の大きな進歩と言えます...
ソートアルゴリズム平均時間計算量バブルソート (n2) 選択ソート (n2) 挿入ソート (n2) ...
[[342701]] スマートホーム革命はかなり前から本格化しています。住宅所有者はデータと IoT...
クロード3は発売されてから24時間以上経ちますが、今でも人々の認知をリフレッシュさせています。量子物...
2020年の東京オリンピックはこれまで以上に盛り上がっています。 7月28日に行われた男子体操個人...
過去数年間、研究者たちは人工知能システムの安全性にますます関心を寄せてきました。 AI 機能のサブセ...
今後10年間で世界を変える人工知能の4つの主要な発展トレンドの分析61歳のビル・ゲイツ氏は大学卒業生...
2018 年は人工知能と機械学習にとって「収穫」の年でした。特にヘルスケア、金融、音声認識、拡張現実...
今日、世界は、パーソナライズされたエクスペリエンスを提供しながら、人間が重要な決定を下したり、重要な...
[[200702]] 250年以上にわたり、技術革新は経済発展の根本的な原動力となってきました。これ...