成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

排序算法和二分法查找

blastz / 1696人閱讀

摘要:請?zhí)畛浯a,使能使傳入的參數(shù)按照從小到大的順序顯示出來。冒泡排序從小到大排序從大到小排序快速排序插入排序二分查找遞歸方法二分查找非遞歸方法

請?zhí)畛浯a,使mySort()能使傳入的參數(shù)按照從小到大的順序顯示出來。

function mySort() {
    var tags = new Array();
    for (var i = 0; i < arguments.length; i++) {
        tags.push(arguments[i]);
    }
    tags.sort(function sortNum(a, b) {
        return a - b;
    });
    return tags;
}

var result = mySort(50, 11, 16, 32, 24, 99, 57, 100);
console.info(result);

冒泡排序

function bubbleSort(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length - i; j++) {
            var temp = 0;
            // ">" 從小到大排序
            // "<" 從大到小排序
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    return arr;
}

快速排序

 function quickSort(elements) {
    if (elements.length <= 1) {
        return elements;
    }
    var pivotIndex = Math.floor(elements.length / 2);
    var pivot = elements.splice(pivotIndex, 1)[0];
    var left = [];
    var right = [];
    for (var i = 0; i < elements.length; i++) {
        if (elements[i] < pivot) {
            left.push(elements[i]);
        } else {
            right.push(elements[i]);
        }
    }
    return quickSort(left).concat([pivot], quickSort(right));
}

插入排序

insertSort = function (elements) {
    var i = 1,
        j, step, key, len = elements.length;
    for (; i < len; i++) {
        step = j = i;
        key = elements[j];
        while (--j > -1) {
            if (elements[j] > key) {
                elements[j + 1] = elements[j];
            } else {
                break;
            }
        }
        elements[j + 1] = key;
    }
    return elements;
};

二分查找-遞歸方法

function binarySearch(arr, key, leftIndex, rightIndex) {
    if (leftIndex > rightIndex) {
        return -1;
    }
    var mid = parseInt((leftIndex + rightIndex) / 2);
    if (arr[mid] == key) {
        return mid;
    } else if (arr[mid] > key) {
        rightIndex = mid - 1;
        return binarySearch(arr, key, leftIndex, rightIndex);
    } else if (arr[mid] < key) {
        leftIndex = mid + 1;
        return binarySearch(arr, key, leftIndex, rightIndex);
    }
}

二分查找-非遞歸方法

function binarySearch(arr, key) {
    var leftIndex = 0,
        rightIndex = arr.length - 1;
    while (leftIndex <= rightIndex) {
        var mid = parseInt((leftIndex + rightIndex) / 2);
        if (arr[mid] == key) {
            return mid;
        } else if (arr[mid] < key) {
            leftIndex = mid + 1;
        } else if (arr[mid] > key) {
            rightIndex = mid - 1;
        } else {
            return -1;
        }
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88227.html

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)與算法二分查找

    摘要:為檢查長度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點是高水平的讀者可研究一下二叉樹關(guān)于二叉樹,戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹算法常見練習在一個二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數(shù)據(jù)結(jié)構(gòu) 簡單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲存空間小) 無序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無序...

    zsirfs 評論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法二分查找

    摘要:為檢查長度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點是高水平的讀者可研究一下二叉樹關(guān)于二叉樹,戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹算法常見練習在一個二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數(shù)據(jù)結(jié)構(gòu) 簡單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲存空間小) 無序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無序...

    you_De 評論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法二分查找

    摘要:為檢查長度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點是高水平的讀者可研究一下二叉樹關(guān)于二叉樹,戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹算法常見練習在一個二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數(shù)據(jù)結(jié)構(gòu) 簡單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲存空間?。?無序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無序...

    gotham 評論0 收藏0
  • 二分查找】| 模擬 20 萬數(shù)據(jù)快速查詢 IP 歸屬地

    摘要:通過兩個二分查找的條件繼續(xù)進行問題的分析,那么問題又來了,二分查找是快速的查找一個數(shù)據(jù)是否存在一組數(shù)據(jù)中,而且效率極高,億查找一個數(shù)據(jù)只需次查找。二分查找的三點重點循環(huán)退出條件注意是而不是。 showImg(https://segmentfault.com/img/remote/1460000018761246);這篇文章主要深入數(shù)據(jù)結(jié)構(gòu)與算法在解決實際問題怎么運用和分析的,對于 IP...

    The question 評論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法——二分查找

    摘要:所以,二分查找較適用于一次排序,多次查找的數(shù)據(jù)。面對大量的數(shù)據(jù),二分查找方能體現(xiàn)其優(yōu)勢。 1. 二分查找的思想 二分查找是一種使用十分普遍的查找算法,其基本的思路也非常的簡單,在一個有序的數(shù)據(jù)集合中,我們想要查找某個數(shù)據(jù),直接取最中間的那個數(shù)據(jù),將它和要找的數(shù)據(jù)進行比較,如果較大,則在更大的那個數(shù)值區(qū)間繼續(xù)取中間值查找,反之亦然。 例如我們要在一個有序的集合里[1,3,5,6,7,8,...

    boredream 評論0 收藏0
  • PHP面試:常見查找算法一篇說透

    摘要:我們現(xiàn)在來看二分搜索算法的兩種變形插值搜索和指數(shù)搜索。插值搜索是對二分搜索算法的改進,插值搜索可以基于搜索的值選擇到達不同的位置。 預(yù)警 在本篇文章中,將為各位老鐵介紹不同的搜索算法以及它們的復(fù)雜度。因為力求通俗易懂,所以篇幅可能較長,大伙可以先Mark下來,每天抽時間看一點理解一點。本文配套的Github Repo,歡迎各位老鐵star,會一直更新的。 開篇 和排序類似,搜索或者叫做...

    付永剛 評論0 收藏0

發(fā)表評論

0條評論

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