JavaScript算法(归并排序与快速排序)

  归并排序与快速排序这两个算法放在一起,也是因为时间复杂度都是对数级别的。

  目前看过的资料,归并排序看《学习JavaScript数据结构与算法》介绍的归并排序吧,快速排序直接看百度百科,讲的不错。通过这两份资料弄明白实现原理之后,最后看《学习JavaScript数据结构与算法》一书里的JS实现代码。

  和之前的一样,嗯,《学习JavaScript数据结构与算法》这本书里都有现成ES5代码,就不在这儿写了,关键是弄清楚原理,然后JS代码每天写两遍,就OK了。ES6的代码周五之前补上。

  目前着急把数据结构与算法给攻下了,这块知识占用了很长时间了,计划12月25号完成。春节前把JS设计模式搞定,成为一名合格的中级前端工程师。

  归并排序:

    var array = [7, 3, 9, 6, 11, 2, 4, 5];
    var merge = (left, right) => {
        var result = [],
            il = 0,
            ir = 0;
        while (il < left.length && ir < right.length) {
            if (left[il] < right[ir]) {
                result.push(left[il++]);
            } else {
                result.push(right[ir++]);
            }
        }

        while (il < left.length) {
            result.push(left[il++]);
        }

        while (ir < right.length) {
            result.push(right[ir++]);
        }

        return result;
    };
    var mergeSortRec = arr => {
        var length = arr.length;
        if (length === 1) {
            return arr;
        }
        var mid = Math.floor(length/2),
            left = arr.slice(0, mid),
            right = arr.slice(mid, length);
        return merge(mergeSortRec(left), mergeSortRec(right));
    }

    var newArray = mergeSortRec(array);
    console.log(newArray);

JavaScript算法(归并排序与快速排序)

  算法和验证过程都给出了,其实还是挺复杂的。

上一篇:StackExchange.Redis 官方文档(四) KeysScan


下一篇:机器学习之支持向量机—SVM原理代码实现