プログラマーを夢中にさせるソートアルゴリズムに関するビデオ

プログラマーを夢中にさせるソートアルゴリズムに関するビデオ

ルーマニア人はダンスが大好きな国民です。古いルーマニア映画「チプリアン・ボロンベスク」をご覧になったことがあるなら、その明るくメロディアスなダンスミュージックの情熱に心を奪われるでしょう。

ルーマニア人はダンスが大好きです。それは映画やフェスティバルだけに反映されているわけではありません。ダンスはどこにでも見られます。大学のコンピューター コースでのソート アルゴリズムの指導もダンスの形で行われます。

ルーマニアのトゥルグ・ムレシュにあるサピエンティア大学は、さまざまなソートアルゴリズムがどのように機能するかを説明する一連のフォークダンスを制作しました。ここにそれらのビデオがあります。

ダンスはとても良いですが、教育効果を判断するのは私にとって難しいです。少なくとも、これらのソートアルゴリズムの効率性に深刻な疑問を感じます。

ソートアルゴリズム: 選択ソート

選択ソートはシンプルで直感的なソートアルゴリズムです。仕組みは以下のとおりです。まず、ソートされていないシーケンス内の最小 (最大) の要素を見つけて、ソートされたシーケンスの開始位置に格納します。次に、残りのソートされていない要素から最小 (最大) の要素を探し続け、ソートされたシーケンスの最後に配置します。すべての要素がソートされるまでこれを繰り返します。

選択ソートの主な利点は、データの移動に関連しています。要素が正しい最終位置にある場合、その要素は移動されません。選択ソートでは、要素のペアを交換するたびに、少なくともそのうちの 1 つが最終位置に移動されるため、n 個の要素のリストをソートするには、合計で最大 n-1 回の交換が必要になります。要素の移動に完全にスワップに依存するすべてのソート方法の中で、選択ソートは非常に優れた方法です。

ソートアルゴリズム: シェルソート

ヒル ソートは、降順増分ソート アルゴリズムとも呼ばれ、挿入ソートのより効率的な改良版です。シェルソートは不安定なソートアルゴリズムです。

ヒルソートは、挿入ソートの次の 2 つの特性に基づいた改良された方法を提案します。

1. 挿入ソートは、ほぼソートされたデータに対して操作する場合に効率的です。つまり、線形ソートの効率を実現できます。
2. ただし、挿入ソートではデータを 1 ビットずつしか移動できないため、一般的に効率が悪いです。

ソートアルゴリズム: バブルソート

バブルソート(Bubble Sort、台湾語ではバブルソートまたはバブルソートと訳される)は、単純なソートアルゴリズムです。ソートする配列を繰り返し処理し、一度に 2 つの要素を比較して、順序が間違っている場合はそれらを交換します。シーケンスを訪問する作業は、交換が不要になるまで、つまりシーケンスがソートされるまで繰り返されます。このアルゴリズムの名前は、小さな要素が交換を通じてゆっくりとシーケンスの先頭に「浮かんで」いくという事実に由来しています。

バブルソートでは、n 個の項目に対して O(n^2) 回の比較が必要であり、その場でソートできます。このアルゴリズムは理解して実装するのが最も簡単なソートアルゴリズムの 1 つですが、少数以上の要素のシーケンスをソートするには非常に非効率的です。

ソートアルゴリズム: クイックソート

クイックソートは、Tony Hall によって開発されたソートアルゴリズムです。平均すると、n 個の項目をソートするには O(n log n) 回の比較が必要です。最悪の場合、O(n2) 回の比較が必要になりますが、これは一般的ではありません。実際、クイック ソートは、その内部ループがほとんどのアーキテクチャで効率的に実装できるため、他の O(n log n) アルゴリズムよりも大幅に高速になることがよくあります。

ソートアルゴリズム: マージソート

マージソート(Merge sort、台湾ではmerge sortと訳される)は、マージ操作に基づく効果的なソートアルゴリズムです。このアルゴリズムは、分割統治法の非常に典型的な応用です。

ソートアルゴリズム: 挿入ソート

挿入ソートのアルゴリズムの説明は、シンプルで直感的なソート アルゴリズムです。これは、順序付けられたシーケンスを構築することによって機能します。ソートされていないデータの場合は、ソートされたシーケンス内で後ろから前へスキャンし、対応する位置を見つけて挿入します。挿入ソートは通常、インプレースソート(つまり、O(1)の追加スペースのみを必要とするソート)によって実装されます。したがって、後ろから前へスキャンするプロセスでは、挿入する最初の要素のためのスペースを確保するために、ソートされた要素を繰り返し後方にシフトする必要があります。

この記事は http://www.vaikan.com/sort-dance/ から引用しました。

<<:  素晴らしいクラスタリングアルゴリズムがサイエンス誌に掲載されました

>>:  なぜアルゴリズムを犬のように飼いならすのか

ブログ    

推薦する

face_recognitionに基づく顔認識の実装

前回の記事では、写真に写っている顔を検出し、顔の特徴(鼻、目、眉毛など)をマークしました。この記事で...

人工知能を活用した高齢者介護サービスについての考察

高齢者介護サービスも人工知能を積極的に取り入れる必要がある。両者を統合し、相互に補強し、高齢者の多様...

人工知能のこれら 5 つのトレンドは世界にどのような影響を与えるでしょうか?

人工知能はもはや未来の技術ではありません。私たちの日常の作業を自動化する機械はますます賢くなり、人工...

脳コンピューターインターフェースにおける重要な進歩!国内チームが「フルスペクトル中国語解読」に成功:トップ3の正解率は100%に迫る

今年8月、ネイチャー誌に立て続けに掲載された2つの論文は、脳コンピューターインターフェースが言語回復...

...

マイクロソフト、人間の編集者をAIに置き換え、ジャーナリスト数名を解雇

[[328414]]マイクロソフトは、マイクロソフトニュースとMSNチームから数十人のジャーナリスト...

脳とコンピュータをつなぐ技術が実現!未来の人類社会はどうなる?

人類の歴史において、あらゆる主要な技術革命は人類自身と社会全体に影響を及ぼしてきました。同じことは、...

OpenAI のもう一つの「大ヒット作」: AI に芸術的創造性を与える

OpenAIがまた爆弾発言をしました。昨年夏に人気の言語モデルGPT-3を発表したOpenAIの研究...

人工知能のボトルネックを解決し、フードデリバリー業界の発展を促進

近年、消費者向けインターネットが深化し、産業向けインターネットが徐々に向上するにつれて、さまざまな業...

謎を解く:AI の神話と現実

序文数年前までは、学術機関以外で人工知能(AI)について真剣に議論している人を見つけることは困難でし...

Leetcode の基本アルゴリズム: スライディング ウィンドウについてお話しましょう

[[434663]]序文LeetCode を練習していると、スライディング ウィンドウ タイプの問題...

情報漏洩を防ぐためにローカルで構築できるオープンソースモデルPrivateGPTが利用可能になりました

6月25日、サムスン、JPモルガン・チェース、アップル、アマゾンなどの企業は、会社の機密情報の漏洩を...

Google:MLの発展を牽引する転移学習とは何でしょうか?丨NeurIPS 2020

機械学習の分野でよく使われる分類学習タスクでは、訓練された分類モデルの精度と高い信頼性を確保するため...

PillarNeSt: Pillar ベースの 3D オブジェクト検出のパフォーマンスをさらに向上させるにはどうすればよいでしょうか?

著者の個人的な理解に基づいて書かれた現在、自動運転の分野では、点群データを収集するためのLIDARセ...