国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript 算法整理

xbynet / 2238人閱讀

摘要:快速排序快速排序原始數組二分查找冒泡排序冒泡排序耗時冒泡排序耗時改進后的冒泡排序耗時改進后的冒泡排序耗時排序前冒泡排序后改進的冒泡排序后選擇排序選擇排序耗時選擇排序耗時排序前排序后插入排序插入排序耗時插入排序耗時排序前排序后

快速排序
function quickSort(ary, isDesc) {
    var len = ary.length;
    if (len < 3) {
        return ary;
    }
    var baseIndex = Math.floor(len / 2),
        base = ary[baseIndex];
    var smallAry = [],
        largeAry = [];
    for (var i = len - 1, cur; i > -1; i--) {
        cur = ary[i];
        if (i == baseIndex) {
            continue;
        }
        if (isDesc) {
            cur < base ? (largeAry[largeAry.length] = cur) : (smallAry[smallAry.length] = cur);
        } else {
            cur >= base ? (largeAry[largeAry.length] = cur) : (smallAry[smallAry.length] = cur);
        }
    }
    smallAry[smallAry.length] = base;
    return quickSort(smallAry, isDesc).concat(quickSort(largeAry, isDesc));
}

function halfSearch(ary, num) {
    var len = ary.length,
        middle = Math.floor(len / 2),
        midNum = ary[middle];
    if (len == 0) {
        return null;
    } else if (num === midNum) {
        return midNum;
    } else if (midNum > num ) {
        return halfSearch(ary.slice(0, middle), num);
    } else {
        return halfSearch(ary.slice(middle + 1), num);
    }
}

var testAry = [9, 2, 3, 4, 1, 0, 8, 4, 2];
var sortedAry = quickSort(testAry);
console.log(sortedAry, "快速排序");
console.log(testAry, "原始數組");
console.log(halfSearch(sortedAry, 3), "二分查找");
冒泡排序
var common = require("./common");

function bubbleSort(ary){
    console.time("冒泡排序耗時");
    var len = ary.length;
    for(var i = 0; i < len; i++){
        for(var j = 0; j < len-1-i; j++){
            if(ary[j] > ary[j+1]){
                var tmp = ary[j];
                ary[j] = ary[j+1];
                ary[j+1] = tmp;
            }
        }
    }
    console.timeEnd("冒泡排序耗時");
    return ary;
}

function bubbleSort2(ary){
    console.time("改進后的冒泡排序耗時");
    var i = ary.length -1;
    while(i > 0){
        var pos;
        for(var j = 0; j < i; j++){
            if(ary[j] > ary[j+1]){
                pos = j;
                var tmp = ary[j];
                ary[j] = ary[j+1];
                ary[j+1] = tmp;
            }
            i = pos;
        }
    }
    console.timeEnd("改進后的冒泡排序耗時");
    return ary;
}

var ary = common.createAry(200);
console.log("排序前", ary.toString());
var result = bubbleSort(ary);
console.log(result.toString(), "冒泡排序后");
console.log(tmp.toString());
result = bubbleSort2(tmp);
console.log(result.toString(), "改進的冒泡排序后");
選擇排序
var common = require("./common");
function chooseSort(ary){
    console.time("選擇排序耗時");
    var len = ary.length,
        tmp, minIndex;
    for(var i = 0; i < len; i++){
        minIndex = i;
        for(j = i+1; j < len - i; j++){
            if(ary[j] < ary[minIndex]){
                minIndex = j;
            }
        }
        tmp = ary[i];
        ary[i] = ary[minIndex];
        ary[minIndex] = tmp;
    }
    console.timeEnd("選擇排序耗時");
    return ary;
}

var ary = common.createAry(20);
console.log("排序前", ary);
var sortedAry = chooseSort(ary);
console.log("排序后", sortedAry);
插入排序
var common = require("./common");
function insertSort(ary) {
    console.time("插入排序耗時");
    var len = ary.length;
    for (var i = 1; i < len; i++) {
        var key = ary[i],
            j = i - 1;
        while (j >= 0 && key < ary[j]) {
            ary[j + 1] = ary[j];
            j--;
        }
        ary[j + 1] = key;
    }
    console.timeEnd("插入排序耗時");
    return ary;
}

var ary = common.createAry(20);
console.log("排序前", ary);
var sortedAry = insertSort(ary);
console.log("排序后", sortedAry);
common.js
exports.createAry =  function(number){
    var ary = [];
    for(let i = 0; i < number; i++){
        ary.push(Math.floor(Math.random()*100));
    }
    return ary;
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91838.html

相關文章

  • Javascript之常見算法整理(持續更新)

    摘要:所以平均來說,插入排序的時間復雜度是。顯然,次方級別的時間復雜度代表著插入排序不適合數據特別多的情況,一般來說插入排序適合小數據量的排序。 更新了幾個知識點~歡迎一起交流呀~ 一、排序 冒泡排序(復雜度O(n^2)) //冒泡排序 function bubbleSort(arr) { for(var i = 0, len = arr.length; i < len - 1; +...

    cc17 評論0 收藏0
  • 數據結構與算法資源整理

    摘要:匯總數據結構算法篇算法與數據結構我接觸過的前端數據結構與算法十大經典排序算法總結描述 showImg(https://segmentfault.com/img/bVbn0N2?w=458&h=275); 2018匯總數據結構算法篇JavaScript 算法與數據結構我接觸過的前端數據結構與算法十大經典排序算法總結(JavaScript描述)

    neu 評論0 收藏0
  • 詳細解說JavaScript內存管理和GC算法

      JavaScript在創建變量(數組、字符串、對象等)是自動進行了分配內存,而且當它沒有被使用的狀態下,會自動的釋放分配的內容;其實這樣基層語言,如C語言,他們提供了內存管理的接口,比如malloc()用于分配所需的內存空間、free()釋放之前所分配的內存空間。  釋放內存的過程稱為垃圾回收,例如avaScript這類高級語言可以提供了內存自動分配和自動回收,其實這個自動儲存不會占用太多空間...

    3403771864 評論0 收藏0
  • 淺談V8引擎中的垃圾回收機制

    摘要:新生代的對象為存活時間較短的對象,老生代中的對象為存活時間較長或常駐內存的對象。分別對新生代和老生代使用不同的垃圾回收算法來提升垃圾回收的效率。如果指向老生代我們就不必考慮它了。 這篇文章的所有內容均來自 樸靈的《深入淺出Node.js》及A tour of V8:Garbage Collection,后者還有中文翻譯版V8 之旅: 垃圾回收器,我在這里只是做了個記錄和結合 垃圾回收...

    happen 評論0 收藏0

發表評論

0條評論

xbynet

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<