ソートアルゴリズムのJavascriptの実装(使用)

Javascriptののソートアルゴリズムの実現

いくつかの単語の男は、コードを直接、言いました。

1.バブルソート

後者の大きい、2つの間の位置の交換は、さもなければ同じ位置よりも前者の場合、2つの数字が続く1は、隣接する比較します

前記第1ステップの動作の方法は、最後の数まで、長さ1の数字の前に繰り返されます

グラフィックの例

コードは以下の通りであります:

function bubbleSort(nums) {
            var key = 0;
            for (var i = 0; i < nums.length - 1; i++) {
                for (var j = i + 1; j < nums.length; j++) {
                    if (nums[i] > nums[j]) {
                        key = nums[i];
                        nums[i] = nums[j];
                        nums[j] = key;
                    }
                }
            }
            return nums;
        }

2. [ソート

図1に示すように、最小のシーケンス番号との前の交換位置の数を見つけます

グラフィックの例

コードは以下の通りであります:

function select(nums){
            var item =0;
            for(var i = 0;i<nums.length-1;i++){
                var min = i;                                //把最小索引给min
                for(var j = i+1;j<nums.length;j++){
                    if(nums[min] > nums[j]) {               //对比,如果最小索引的vlaue大于其他value,则将该索引给min
                        min = j                             
                    }
                }               
                item = nums[min];                           //最小索引给他
                nums[min] = nums[i];
                nums[i] = item;
            }
            return nums;
        }

3、クイックソート

1、中間体の数は、基準として、アレイを介して、左側のアレイの基準数よりも少ない、右のアレイの基準数よりも大きいされていることを見つけます

図2に示すように、同じ方法は、これらの二つのアレイがソートされ

3、再帰

グラフィックの例:

コードは以下の通りであります:

var quickSort = function(nums) {
            if (nums.length <= 1) return nums;
            var pivotIndex = Math.floor(nums.length / 2);
            var pivot = nums.splice(pivotIndex, 1)[0]; //splice返回的是一个数组,所以用[0]取出来
            var left = [];
            var right = [];
            for (var i = 0; i < nums.length; i++) {
                if (nums[i] < pivot) {
                    left.push(nums[i]);
                } else {
                    right.push(nums[i]);
                }
            }

            return quickSort(left).concat(pivot, quickSort(right)); //使用递归完成快排
        }

4、挿入ソート

1は、配列[]はソートされ、[]ソートされていない2つの部分に分割され、第一セット番号[ソート]、[残り]未分類

図2は、順次前方にソートされ、[部]、未分類の最初の[]の数から引き出され、そして数が抽出よりも大きい場合、比較は、挿入された後、前方継続、またはポイント

グラフィックの例:

コードは以下の通りであります:

function insertionSort(nums) {
            var i,j,value;
            var len  = nums.length;
            for(i = 0;i<len;i++){
                value = nums[i];
                for(j = i-1;j>=0&&nums[j]>value;j--){
                    nums[j+1] = nums[j];                        //向后移一位
                }
                nums[j+1] = value;
            }
            return nums
        }

おすすめ

転載: www.cnblogs.com/seanxushuo/p/11461743.html
おすすめ