ホームページ >ウェブフロントエンド >jsチュートリアル >一般的に使用される JS ソート アルゴリズム
今回は、一般的に使用される JS ソート アルゴリズムについて説明します。JS ソート アルゴリズムを使用する際の 注意事項 は何ですか?実際のケースを見てみましょう。
1.var bubbleSort = function(arr) { for (var i = 0, len = arr.length; i < len - 1; i++) { for (var j = i + 1; j < len; j++) { if (arr[i] > arr[j]) { var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; };2.
var insertSort = function(arr) { var len = arr.length, key; for (var i = 1; i < len; i++) { var j = i; key = arr[j]; while (--j > -1) { if (arr[j] > key) { arr[j + 1] = arr[j]; } else { break; } } arr[j + 1] = key; } return arr; };
4.ヒルソート
function shellSort(arr) { if (arr.length < 2) { return arr; }; var n = arr.length; for (gap = Math.floor(n / 2); gap > 0; gap = Math.floor(gap /= 2)) { for (i = gap; i < n; ++i) { for (j = i - gap; j >= 0 && arr[j + gap] < arr[j]; j -= gap) { temp = arr[j]; arr[j] = arr[j + gap]; arr[j + gap] = temp; } } } return arr; };
5.マージソート
function merge(left, right) { var result = []; while (left.length > 0 && right.length > 0) { if (left[0] < right[0]) { // shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值 result.push(left.shift()); } else { result.push(right.shift()); } } return result.concat(left).concat(right); } function mergeSort(arr) { if (arr.length == 1) { return arr; } var middle = Math.floor(arr.length / 2), left = arr.slice(0, middle), right = arr.slice(middle); return merge(mergeSort(left), mergeSort(right)); }
6.クイックソート
var quickSort = function(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++) { if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right)); };
アルゴリズムの効率比較
----------------------------------------------- - -------
| 平均的なケース | 最悪のケース |---------- ---- ------------------------------------------------ -
|ソート | O(n²) | O(n²) | ----------------------------------
| 選択ソート | O(n²) | (n²) | 不安定|
------------------------------------------ -- ------------------------
| 挿入ソート | O(n²) |
-- ------------------------------------------------- - ----------
| 丘のソート | O(n^1.5) |
---- ------------------------------------------------ ---- --
| ソート O(nlogn) | O(nlogn) | - ------------------------------------------
| クイックソート | nlogn ) | O(nlogn) | 不安定 |
---------------------------------- ------------------------
この記事の事例を読んだ後、あなたはその方法をマスターしたと思います。さらに興味深い情報については、お支払いください。 php中国語サイトに注目 その他関連記事も!
推奨読書:
以上が一般的に使用される JS ソート アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。