阿里云优惠活动,点击链接进行购买: 一年仅需96.9元即可以购买服务器~

腾讯云优惠活动, 点击链接进行购买一年仅需99元

腾讯云限时开团活动, 点击链接进行购买一年仅需95元

各大服务器厂商对比选购

# 排序算法之堆排序(js)

	var floor = Math.floor;
    var H = {
        1: 9,
        2: 8,
        3: 7,
        4: 6,
        5: 5,
        6: 4,
        7: 3,
        8: 2,
        9: 1
    };
    // 向上
    function sift_up(H, i) {
        var done = false;
        if (i !== 1) {
            while (!done && i !== 1) {
                if (H[i] > H[floor(i / 2)]) {
                    var temp;
                    temp = H[i];
                    H[i] = H[floor(i / 2)];
                    H[floor(i / 2)] = temp;
                } else {
                    done = true;
                }
                i = floor(i / 2);
            }
        }
        return H;
    }
    // 向下
    function sift_down(H, n, i) {
        var done = false;
        if ((2 * i) < n) {
            while (!done && ((i = i * 2) <= n)) {
                if ((i + 1) < n && (H[i + 1] > H[i])) {
                    i = i + 1;
                }
                if (H[floor(i / 2)] < H[i]) {
                    var temp;
                    temp = H[i];
                    H[i] = H[floor(i / 2)];
                    H[floor(i / 2)] = temp;
                } else {
                    done = true;
                }
            }
        }
        return H;
    }
    // 增加
    function insert(H, n, x) {
        n = n + 1;
        H[n] = x;
        return sift_up(H, n);
    }
    // 删除
    function deleteobj(H, n, i) {
        var x, y;
        x = H[i];
        y = H[n];
        delete H[n];
        n = n - 1;
        if (i <= n) {
            H[i] = y;
            if (y > x) {
                return sift_up(H, i);
            } else {
                return sift_down(H, n, i);
            }
        }
    }
    // 创建
    function meakup(A, H, n) {
        var i, m = 0;
        for (i = 1; i <= n; i++) {
            H = insert(H, m, A[i]);
            m++;
        }
        return H;
    }
    // 创建
    var H1 = {};
    H1 = meakup(H,H1,9)
    console.log(H1);
    // 向上
    H[9] = 10;
    var cc = sift_up(H, 9);
    console.log(cc);
    // 删除
    console.log(deleteobj(H, 9, 3));
Last Updated: 8/21/2022, 3:42:21 PM