Skip to content

taokexia/JavaScript-Algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 

Repository files navigation

算法与数据结构

使用JavaScript来实现从常用的算法和数据结构

排序算法:

数组:

栈:

队列:

链表:

堆:

树:

并查集:

一种树形结构,下面代码逐步优化.

线段树:

一种树形结构,用于获取区间内数值操作的结果

字典树:

一种树型结构,用于字符串匹配

AVL树:

一种平衡二叉树

红黑树

图论:

最小生成树:

经典算法:

字符串相关算法:

补充

JavaScript测试算法性能

JavaScript用于测试算法性能的常用方法总结:
方法一:

console.time("time");
// 测试的算法
console.timeEnd("time");

方法二:

var start = Date.now();
// 测试的算法
var end = Date.now();
console.log(end-start);

JavaScript迭代器的写法

标准迭代器写法:每一次调用next方法,都会返回数据结构的当前成员的信息。具体来说,就是返回一个包含valuedone两个属性的对象。其中,value属性是当前成员的值,done属性是一个布尔值,表示遍历是否结束。

var it = makeIterator(['a', 'b']);
it.next() // { value: "a", done: false }
it.next() // { value: "b", done: false }
it.next() // { value: undefined, done: true }

function makeIterator(array) {
  var nextIndex = 0;
  return {
    next: function() {
      return nextIndex < array.length ?
        {value: array[nextIndex++], done: false} :
        {value: undefined, done: true};
    }
  };
}

ES6的写法:默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable)。

const obj = {
  [Symbol.iterator] : function () {
    return {
      next: function () {
        return {
          value: 1,
          done: true
        };
      }
    };
  }
};

使用generator:

let generator = function* () {
  yield 1;
  yield* [2,3,4];
  yield 5;
};

var iterator = generator();

iterator.next() // { value: 1, done: false }
iterator.next() // { value: 2, done: false }
iterator.next() // { value: 3, done: false }
iterator.next() // { value: 4, done: false }
iterator.next() // { value: 5, done: false }
iterator.next() // { value: undefined, done: true }

About

使用JavaScript来实现从常用的算法和数据结构

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors