いくつかの古典的なソートアルゴリズムのJS実装方法_基礎知識
1. バブルソート
function BubbleSort(array) { var length = array.length; for (var i = length - 1; i > 0; i--) { //用于缩小范围 for (var j = 0; j < i; j++) { //在范围内进行冒泡,在此范围内最大的一个将冒到最后面 if (array[j] > array[j+1]) { var temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } console.log(array); console.log("-----------------------------"); } return array; } var arr = [10,9,8,7,7,6,5,11,3]; var result = BubbleSort(arr); console.log(result); /* [ 9, 8, 7, 7, 6, 5, 10, 3, 11 ] ----------------------------- [ 8, 7, 7, 6, 5, 9, 3, 10, 11 ] ----------------------------- [ 7, 7, 6, 5, 8, 3, 9, 10, 11 ] ----------------------------- [ 7, 6, 5, 7, 3, 8, 9, 10, 11 ] ----------------------------- [ 6, 5, 7, 3, 7, 8, 9, 10, 11 ] ----------------------------- [ 5, 6, 3, 7, 7, 8, 9, 10, 11 ] ----------------------------- [ 5, 3, 6, 7, 7, 8, 9, 10, 11 ] ----------------------------- [ 3, 5, 6, 7, 7, 8, 9, 10, 11 ] ----------------------------- [ 3, 5, 6, 7, 7, 8, 9, 10, 11 ] */
2. 並べ替えを選択します
function SelectionSort(array) { var length = array.length; for (var i = 0; i < length; i++) { //缩小选择的范围 var min = array[i]; //假定范围内第一个为最小值 var index = i; //记录最小值的下标 for (var j = i + 1; j < length; j++) { //在范围内选取最小值 if (array[j] < min) { min = array[j]; index = j; } } if (index != i) { //把范围内最小值交换到范围内第一个 var temp = array[i]; array[i] = array[index]; array[index] = temp; } console.log(array); console.log("---------------------"); } return array; } var arr = [ 1, 10, 100, 90, 65, 5, 4, 10, 2, 4 ]; var result = SelectionSort(arr); console.log(result); /* [ 1, 10, 100, 90, 65, 5, 4, 10, 2, 4 ] --------------------- [ 1, 2, 100, 90, 65, 5, 4, 10, 10, 4 ] --------------------- [ 1, 2, 4, 90, 65, 5, 100, 10, 10, 4 ] --------------------- [ 1, 2, 4, 4, 65, 5, 100, 10, 10, 90 ] --------------------- [ 1, 2, 4, 4, 5, 65, 100, 10, 10, 90 ] --------------------- [ 1, 2, 4, 4, 5, 10, 100, 65, 10, 90 ] --------------------- [ 1, 2, 4, 4, 5, 10, 10, 65, 100, 90 ] --------------------- [ 1, 2, 4, 4, 5, 10, 10, 65, 100, 90 ] --------------------- [ 1, 2, 4, 4, 5, 10, 10, 65, 90, 100 ] --------------------- [ 1, 2, 4, 4, 5, 10, 10, 65, 90, 100 ] --------------------- [ 1, 2, 4, 4, 5, 10, 10, 65, 90, 100 ] */
3. 挿入ソート
function InsertionSort(array) { var length = array.length; for (var i = 0; i < length - 1; i++) { //i代表已经排序好的序列最后一项下标 var insert = array[i+1]; var index = i + 1;//记录要被插入的下标 for (var j = i; j >= 0; j--) { if (insert < array[j]) { //要插入的项比它小,往后移动 array[j+1] = array[j]; index = j; } } array[index] = insert; console.log(array); console.log("-----------------------"); } return array; } var arr = [100,90,80,62,80,8,1,2,39]; var result = InsertionSort(arr); console.log(result); /* [ 90, 100, 80, 62, 80, 8, 1, 2, 39 ] ----------------------- [ 80, 90, 100, 62, 80, 8, 1, 2, 39 ] ----------------------- [ 62, 80, 90, 100, 80, 8, 1, 2, 39 ] ----------------------- [ 62, 80, 80, 90, 100, 8, 1, 2, 39 ] ----------------------- [ 8, 62, 80, 80, 90, 100, 1, 2, 39 ] ----------------------- [ 1, 8, 62, 80, 80, 90, 100, 2, 39 ] ----------------------- [ 1, 2, 8, 62, 80, 80, 90, 100, 39 ] ----------------------- [ 1, 2, 8, 39, 62, 80, 80, 90, 100 ] ----------------------- [ 1, 2, 8, 39, 62, 80, 80, 90, 100 ] */
4. 丘の仕分け
function ShellSort(array) { var length = array.length; var gap = Math.round(length / 2); while (gap > 0) { for (var i = gap; i < length; i++) { var insert = array[i]; var index = i; for (var j = i; j >= 0; j-=gap) { if (insert < array[j]) { array[j+gap] = array[j]; index = j; } } array[index] = insert; } console.log(array); console.log("-----------------------"); gap = Math.round(gap/2 - 0.1); } return array; } var arr = [ 13, 14, 94, 33, 82, 25, 59, 94, 65, 23, 45, 27, 73, 25, 39, 10 ]; var result = ShellSort(arr); console.log(result); /* [ 13, 14, 45, 27, 73, 25, 39, 10, 65, 23, 94, 33, 82, 25, 59, 94 ] ----------------------- [ 13, 14, 39, 10, 65, 23, 45, 27, 73, 25, 59, 33, 82, 25, 94, 94 ] ----------------------- [ 13, 10, 39, 14, 45, 23, 59, 25, 65, 25, 73, 27, 82, 33, 94, 94 ] ----------------------- [ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ] ----------------------- [ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ] */
5. 並べ替えを結合します
function MergeSort(array) { var length = array.length; if (length <= 1) { return array; } else { var num = Math.ceil(length/2); var left = MergeSort(array.slice(0, num)); var right = MergeSort(array.slice(num, length)); return merge(left, right); } } function merge(left, right) { console.log(left); console.log(right); var a = new Array(); while (left.length > 0 && right.length > 0) { if (left[0] <= right[0]) { var temp = left.shift(); a.push(temp); } else { var temp = right.shift(); a.push(temp); } } if (left.length > 0) { a = a.concat(left); } if (right.length > 0) { a = a.concat(right); } console.log(a); console.log("-----------------------------"); return a; } var arr = [ 13, 14, 94, 33, 82, 25, 59, 94, 65, 23, 45, 27, 73, 25, 39, 10 ]; var result = MergeSort(arr); console.log(result); /* [ 13 ] [ 14 ] [ 13, 14 ] ----------------------------- [ 94 ] [ 33 ] [ 33, 94 ] ----------------------------- [ 13, 14 ] [ 33, 94 ] [ 13, 14, 33, 94 ] ----------------------------- [ 82 ] [ 25 ] [ 25, 82 ] ----------------------------- [ 59 ] [ 94 ] [ 59, 94 ] ----------------------------- [ 25, 82 ] [ 59, 94 ] [ 25, 59, 82, 94 ] ----------------------------- [ 13, 14, 33, 94 ] [ 25, 59, 82, 94 ] [ 13, 14, 25, 33, 59, 82, 94, 94 ] ----------------------------- [ 65 ] [ 23 ] [ 23, 65 ] ----------------------------- [ 45 ] [ 27 ] [ 27, 45 ] ----------------------------- [ 23, 65 ] [ 27, 45 ] [ 23, 27, 45, 65 ] ----------------------------- [ 73 ] [ 25 ] [ 25, 73 ] ----------------------------- [ 39 ] [ 10 ] [ 10, 39 ] ----------------------------- [ 25, 73 ] [ 10, 39 ] [ 10, 25, 39, 73 ] ----------------------------- [ 23, 27, 45, 65 ] [ 10, 25, 39, 73 ] [ 10, 23, 25, 27, 39, 45, 65, 73 ] ----------------------------- [ 13, 14, 25, 33, 59, 82, 94, 94 ] [ 10, 23, 25, 27, 39, 45, 65, 73 ] [ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ] ----------------------------- [ 10, 13, 14, 23, 25, 25, 27, 33, 39, 45, 59, 65, 73, 82, 94, 94 ] */
6. クイックソート
function QuickSort(array) { var length = array.length; if (length <= 1) { return array; } else { var smaller = []; var bigger = []; var base = [array[0]]; for (var i = 1; i < length; i++) { if (array[i] <= base[0]) { smaller.push(array[i]); } else { bigger.push(array[i]); } } console.log(smaller.concat(base.concat(bigger))); console.log("-----------------------"); return QuickSort(smaller).concat(base.concat(QuickSort(bigger))); } } var arr = [ 8, 10, 100, 90, 65, 5, 4, 10, 2, 4 ]; var result = QuickSort(arr); console.log(result); /* [ 5, 4, 2, 4, 8, 10, 100, 90, 65, 10 ] ----------------------- [ 4, 2, 4, 5 ] ----------------------- [ 2, 4, 4 ] ----------------------- [ 2, 4 ] ----------------------- [ 10, 10, 100, 90, 65 ] ----------------------- [ 90, 65, 100 ] ----------------------- [ 65, 90 ] ----------------------- [ 2, 4, 4, 5, 8, 10, 10, 65, 90, 100 ] */
上記のいくつかの古典的な並べ替えアルゴリズムの JS 実装方法は、すべてエディターによって共有された内容です。参考にしていただければ幸いです。また、Script Home をサポートしていただければ幸いです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JS と Baidu Map を使用してマップ パン機能を実装する方法 Baidu Map は広く使用されている地図サービス プラットフォームで、Web 開発で地理情報、位置情報、その他の機能を表示するためによく使用されます。この記事では、JS と Baidu Map API を使用してマップ パン機能を実装する方法と、具体的なコード例を紹介します。 1. 準備 Baidu Map API を使用する前に、Baidu Map Open Platform (http://lbsyun.baidu.com/) で開発者アカウントを申請し、アプリケーションを作成する必要があります。作成完了

株式分析に必須のツール: PHP および JS でローソク足チャートを描画する手順を学びます。特定のコード例が必要です。インターネットとテクノロジーの急速な発展に伴い、株式取引は多くの投資家にとって重要な方法の 1 つになりました。株価分析は投資家の意思決定の重要な部分であり、ローソク足チャートはテクニカル分析で広く使用されています。 PHP と JS を使用してローソク足チャートを描画する方法を学ぶと、投資家がより適切な意思決定を行うのに役立つ、より直感的な情報が得られます。ローソク足チャートとは、株価をローソク足の形で表示するテクニカルチャートです。株価を示しています

顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

PHP と JS を使用して株のローソク足チャートを作成する方法。株のローソク足チャートは、株式市場で一般的なテクニカル分析グラフィックです。始値、終値、最高値、株価などのデータを描画することで、投資家が株式をより直観的に理解するのに役立ちます。株価の最低価格、価格変動。この記事では、PHP と JS を使用して株価のローソク足チャートを作成する方法を、具体的なコード例とともに説明します。 1. 準備 開始する前に、次の環境を準備する必要があります。 1. PHP を実行するサーバー 2. HTML5 および Canvas をサポートするブラウザー 3

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した

JS と Baidu Maps を使用して地図ポリゴン描画機能を実装する方法 現代の Web 開発において、地図アプリケーションは一般的な機能の 1 つになっています。地図上にポリゴンを描画すると、ユーザーが表示および分析できるように特定のエリアをマークするのに役立ちます。この記事では、JS と Baidu Map API を使用して地図ポリゴン描画機能を実装する方法と、具体的なコード例を紹介します。まず、Baidu Map API を導入する必要があります。次のコードを使用して、Baidu Map API の JavaScript を HTML ファイルにインポートできます。

JS と Baidu Maps を使用してマップ ヒート マップ機能を実装する方法 はじめに: インターネットとモバイル デバイスの急速な発展に伴い、マップは一般的なアプリケーション シナリオになりました。視覚的な表示方法として、ヒート マップはデータの分布をより直観的に理解するのに役立ちます。この記事では、JS と Baidu Map API を使用してマップ ヒート マップ機能を実装する方法と、具体的なコード例を紹介します。準備作業: 開始する前に、次の項目を準備する必要があります: Baidu 開発者アカウント、アプリケーションの作成、対応する AP の取得

JS と Baidu Maps を使用してマップ クリック イベント処理を実装する方法の概要: Web 開発では、地理的位置と地理情報を表示するためにマップ関数を使用することが必要になることがよくあります。マップ上のクリック イベント処理は、マップ機能の一般的に使用される重要な部分です。この記事では、JS と Baidu Map API を使用して地図のクリック イベント処理機能を実装する方法と、具体的なコード例を紹介します。手順: Baidu Map の API ファイルをインポートします。まず、Baidu Map API のファイルを HTML ファイルにインポートします。これは、次のコードによって実現できます。
