ソートは、すべての 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 個のアルゴリズム
>>: 教師あり学習、教師なし学習、強化学習とは何ですか?ついに誰かが明らかにした
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
百人一首コンテストの最注目出場者がついに正式デビュー!これは、李開復博士が設立した AI 2.0 企...
「Xiaodu スマートスピーカーの価格についてお話ししましょうか?」 「売ることがそんなに失礼だな...
[[259079]] AI の応用により予測コストが大幅に削減され、企業はますます新しい、予想外の方...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
ティム・アンダーソンノアが編集制作:51CTO テクノロジースタック(WeChat ID:blog)...
ChatGPT を使用して有料の Web コンテンツに無料でアクセスすることは、まもなくできなくな...
[[246038]]柔軟で多様な Python ライブラリは、データ分析とデータマイニングのための強...
Facebook は最近、画像内のテキスト スタイルをコピーして再現できる新しい画像 AI「Text...
[[419694]]チップ不足と疫病の影響により、今年初めから自動運転産業の発展は減速を余儀なくされ...
[[220444]]この記事では、TensorFlowの例をいくつか見て、テンソルテンソルまた、テン...