この記事はWeChatの公開アカウント「Beta Learns JAVA」から転載したもので、著者はSilently9527です。この記事を転載する場合は、Beta Learning JAVA パブリック アカウントにお問い合わせください。 この記事は Github リポジトリ https://github.com/silently9527/JavaCore に含まれています。 プログラマーがよく使用する IDEA プラグイン: https://github.com/silently9527/ToolsetIdeaPlugin 完全にオープンソースの Taobao プロジェクト: https://github.com/silently9527/mall-coupons-server 序文 すべてのプログラマーが最初に接触するアルゴリズムはソート アルゴリズムであると私は信じています。ソートはデータ処理と計算において重要な役割を果たしており、ソート アルゴリズムは他のアルゴリズムの基礎となることが多いためです。この記事では、基本的なソート アルゴリズムからアルゴリズムの学習を始めます。 ソートアルゴリズムのテンプレート 始める前に、ソート アルゴリズムの共通テンプレートを定義しましょう。以降のすべてのソート アルゴリズムはこのテンプレートを実装します。
選択ソート アルゴリズム実装のアイデア:
コード実装:
入力配列がソートされている場合、選択ソートの実行にはソートされていない場合と同じくらいの時間がかかることがわかります。 N要素の配列の場合、選択ソートを使用する際の時間計算量はO(n2)である。 選択ソートは、移動するデータが最も少ないソートです。スワップの数は、配列のサイズに比例します。N 要素の配列には、N 回のスワップが必要です。 バブルソート アルゴリズム実装のアイデア: 隣接する 2 つの要素を比較します。最初の要素が 2 番目の要素よりも大きい場合は、2 つの要素の位置を入れ替えます。 最後の要素まで、隣接する要素の各グループに対して同じ操作を実行します。操作が完了したら、最大の要素をランク付けできます。 配列内のすべての要素が整うまでこのプロセスを繰り返します。 コード実装:
N要素の配列の場合、バブルソートの時間計算量はO(n2)です。 挿入ソート ポーカーをプレイしているとき、左側の分類されたカードの適切な位置に各カードを挿入してカードを並べることを想像してください。挿入ソートの考え方は似ている アルゴリズム実装のアイデア:
コード実装:
コードの実装から、現在のインデックスの要素が左側の順序付き配列の最後の要素よりも大きい場合、内部ループが直接終了し、ソートする配列に部分的な順序があり、挿入ソート アルゴリズムが非常に高速になることがわかります。 最悪のケースを考えると、入力配列が反転されている場合、挿入ソートの効率は選択ソートと同じで、「時間計算量はO(n2)」です。 シェルソート 挿入ソートは、隣接する要素を交換するだけであり、要素は配列から正しい位置に少しずつしか移動できないため、大規模な順序不同の配列では遅くなります。挿入ソートは、部分的に順序付けられた配列をソートするのに非常に効率的です。 シェルソートは、これら 2 つの特性に基づいて挿入ソートを改良します。 アルゴリズム実装のアイデア
シェル ソートが効率的な理由は、ソートの開始時に各サブ配列が非常に短く、ソート後にサブ配列が部分的に順序付けられるためです。どちらの状況も挿入ソートに非常に適しています。 コード実装:
|
<<: AI研究 | 陸宇:人工知能はオンライン教育を改善する大きな可能性を秘めている
人工知能研究チームOpenAIが発表した最新の報告書は、ロボットが自ら作成した新しい言語を使って互い...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[427951]]この記事はWeChatの公開アカウント「Programmer Bear」から転載...
[[320126]] [51CTO.com クイック翻訳]ソフトウェア定義広域ネットワーク (SD-...
[[427302]]ガートナーの新しい調査によると、人工知能 (AI) 技術計画を持つテクノロジーお...
「巴斯」と呼ばれる快適さと「成都」と呼ばれるライフスタイルがあり、中国で最も幸せな都市として、成都は...
6月28日、OpenAIは今年5月にリリースしたChatGPTアプリのiOS版をリリースした。このア...
「マトリックスシミュレーション」の世界は本当に存在するかもしれない。人間のニューロンをシミュレートし...
スタックは、特別な順序付けがされたテーブルです。挿入および削除操作はスタックの先頭で実行され、先入れ...
AI ツールの導入はほとんどの組織がセキュリティを確保できるよりも速いペースで進んでいるため、シャド...
[[441423]]機械学習分野の研究者は皆、パラメータ調整という課題に直面していますが、言うほど簡...
ディープラーニングにおける活性化関数は、ニューラル ネットワークの重要なコンポーネントです。活性化関...
近年の人工知能の発展スピードは驚異的で、あらゆる分野で専門的なAIが登場しています。上海では以前、無...
[[411577]]この記事はWeChatの公開アカウント「Light City」から転載したもので...