この記事はWeChatの公開アカウント「Beta Learns JAVA」から転載したもので、著者はSilently9527です。この記事を転載する場合は、Beta Learning JAVA パブリック アカウントにお問い合わせください。 序文 すべてのプログラマーが最初に接触するアルゴリズムはソート アルゴリズムであると私は信じています。ソートはデータ処理と計算において重要な役割を果たしており、ソート アルゴリズムは他のアルゴリズムの基礎となることが多いためです。この記事では、基本的なソート アルゴリズムからアルゴリズムの学習を始めます。 ソートアルゴリズムのテンプレート 始める前に、ソート アルゴリズムの共通テンプレートを定義しましょう。以降のすべてのソート アルゴリズムはこのテンプレートを実装します。
選択ソート アルゴリズム実装のアイデア:
コード実装:
入力配列がソートされている場合、選択ソートの実行にはソートされていない場合と同じくらいの時間がかかることがわかります。 N要素の配列の場合、選択ソートを使用する際の時間計算量はO(n2)である。 選択ソートは、移動するデータが最も少ないソートです。スワップの数は、配列のサイズに比例します。N 要素の配列には、N 回のスワップが必要です。 バブルソート アルゴリズム実装のアイデア:
コード実装:
N要素の配列の場合、バブルソートの時間計算量はO(n2)です。 挿入ソート ポーカーをプレイしているとき、左側の分類されたカードの適切な位置に各カードを挿入してカードを並べることを想像してください。挿入ソートの考え方は似ている アルゴリズム実装のアイデア:
コード実装:
コードの実装から、現在のインデックスの要素が左側の順序付き配列の最後の要素よりも大きい場合、内部ループが直接終了し、ソートする配列に部分的な順序があり、挿入ソート アルゴリズムが非常に高速になることがわかります。 最悪のケースを考えると、入力配列が反転されている場合、挿入ソートの効率は選択ソートと同じで、「時間計算量はO(n2)」です。 シェルソート 挿入ソートは、隣接する要素を交換するだけであり、要素は配列から正しい位置に少しずつしか移動できないため、大規模な順序不同の配列では遅くなります。挿入ソートは、部分的に順序付けられた配列をソートするのに非常に効率的です。 シェルソートは、これら 2 つの特性に基づいて挿入ソートを改良します。 アルゴリズム実装のアイデア
シェル ソートが効率的な理由は、ソートの開始時に各サブ配列が非常に短く、ソート後にサブ配列が部分的に順序付けられるためです。どちらの状況も挿入ソートに非常に適しています。 コード実装:
|
<<: 図解による古典的なプロセススケジューリングアルゴリズム
>>: 自動運転・ホログラム投影!映画に出てくるブラックテクノロジーは私たちからどれくらい遠いのでしょうか?
[[431114]]当時流行した「インターネット+」を覚えている人はいるだろうか...「衣食住交通...
教育改革と人工知能の普及に伴い、キャンパスのインテリジェント構築もデジタルキャンパスからスマートキャ...
人工知能は、ネットワーク セキュリティの攻撃側と防御側の両方で重要な役割を果たす中立的なテクノロジで...
3年間「奇妙な病気」の治療を求めても効果がなかったのですが、ついにChatGPTによって診断に成功し...
機械学習と人工知能:違いは何ですか?機械学習は人工知能のサブフィールドですが、すべての人工知能技術が...
OpenAIを去った技術の第一人者、カルパシー氏はついにオンラインで2時間のAI講座を開始した。 —...
国内アプリプロモーション機関APPYINGはこのほど、アップルのApp Store Chinaランキ...
今日、健康は精神的、社会的、政治的、経済的、都市的健康など、さまざまな分野に関連しています。今日、都...
[51CTO.com クイック翻訳] 現在、世界中のデジタル広告代理店は、ニュースサイト、検索エンジ...
2008 年の金融危機後、都市計画とサービス提供に対する新しいアプローチが世界中で定着し始めました。...
4月17日、市場調査会社リサーチ・アンド・マーケッツが最近発表したレポートでは、2025年までに世界...
近年、世界の人工知能産業は急速な発展の勢いを見せており、セキュリティ状況はますます複雑になっています...
ある研究者が、MITのコンピューターサイエンスの学位の宿題や試験問題を解くことができると主張するチャ...