この記事では、JS実装に一般的に使用されるソートアルゴリズムを共有しています。特定のコンテンツは次のとおりです。
1。バブルソート
var bubblesort = function(arr){var flag = true; var len = arr.length; for(var i = 0; i <len -1; i ++){flag = true; for(var j = 0; j <len -1 -i; j ++){if(arr [j]> arr [j+1]){var temp = arr [j+1]; arr [j+1] = arr [j]; arr [j] = temp; flag = false; }} if(flag){break; }}};2。ソートを選択します
var selectsort = function(arr){var min; for(var i = 0; i <arr.length-1; i ++){min = i; for(var j = i+1; j <arr.length; j ++){if(arr [min]> arr [j]){min = j; }} if(i!= min){swap(arr、i、min); }}}; function swap(arr、index1、index2){var temp = arr [index1]; arr [index1] = arr [index2]; arr [index2] = temp;};3.ソートを挿入します
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; }};4。ヒルソート
var shellsort = function(arr){var gaps = [5、3、1]; for(var g = 0; g <gaps.length; ++ g){for(var i = gaps [g]; i <arr.length; ++ i){var temp = arr [i]; for(var j = i; j> = gaps [g] && arr [j -gaps [g]]> temp; j - = gaps [g]){arr [j] = arr [j -gaps [g]]; } arr [j] = temp; }}};5。注文
関数mergesort(arr){if(arr.length <2){return; } var step = 1; var左、右; while(step <arr.length){left = 0;右=ステップ; while(右 + step <= arr.length){mergearrays(arr、左、左 +ステップ、右、右 +ステップ);左=右 +ステップ;右=左 +ステップ; } if(right <arr.length){mergearrays(arr、left、left + step、right、arr.length); } step *= 2; }} function mergearrays(arr、startleft、stopleft、startright、stopright){var rightarr = new array(stopright -startright + 1); var leftarr = new Array(stopleft -strateft + 1); k = startright; for(var i = 0; i <(rightarr.length -1); ++ i){rightarr [i] = arr [k]; ++ k; } k = startleft; for(var i = 0; i <(leftarr.length -1); ++ i){leftarr [i] = arr [k]; ++ k; } rightarr [rightarr.length -1] = infinity; // Sentinel Value Leftarr [Leftarr.Length -1] = Infinity; // sentinel値var m = 0; var n = 0; for(var k = startleft; k <stopright; ++ k){if(leftarr [m] <= rightarr [n]){arr [k] = leftarr [m]; M ++; } else {arr [k] = rightArr [n]; n ++; }}}6。クイックソート
var QuickSort = function(arr、左、右){var i、j、t、pivot; if(左> =右){return; } pivot = arr [左]; i =左; j =右; while(i!= j){while(arr [j]> = pivot && i <j){j--; } while(arr [i] <= pivot && i <j){i ++; } if(i <j){t = arr [i]; arr [i] = arr [j]; arr [j] = t; }} arr [左] = arr [j]; arr [j] = pivot; QuickSort(arr、左、i -1); QuickSort(arr、i + 1、右);}概要:アルゴリズムの効率比較:
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。