数据结构与算法
青耕
愿我们一如既往坚强
展开
-
初等排序
插入排序插入排序的特点是将数组分为‘已排序’和‘未排序’。这是一种稳定排序。 1.将开头元素视为‘已排序’ 2.取出‘未排序中的第一个元素’,赋值给v 3.在‘已排序’部分将所有比v大的全部后移动一位 4.将v插入到空位中 var arr = [8,3,1,5,2,1]; var v; for (var i = 1; i <arr.length; i++) { v =原创 2017-04-11 19:42:42 · 415 阅读 · 0 评论 -
数据结构——树(JavaScript)
有根树树是一种数据结构,由结点和连接结点的边组成。在本图中,结点A就是根结点,结点A是结点B的父亲结点,结点E与结点K是结点B的兄弟结点,结点C与结点D是结点B的子结点。唯有根结点没有父亲结点,没有子结点的结点为叶子结点。有根树的中结点的子结点个数表示这个节点的度,例如A的度就是3,B的度就是2。从根到节点的路径长度成为节点的深度,节点x到叶节点的最大路径长度称之为节点的高。一棵树中根节点的高度最大原创 2017-07-30 12:36:29 · 306 阅读 · 0 评论 -
搜索——顺序与二分(JavaScript)
顺序搜索 & 二分搜索function ArrayList(){ var array = []; this.insert = function(item){ array.push(item); } this.toString = function(){ return array.join(); } this.sequent原创 2017-07-29 18:31:28 · 154 阅读 · 0 评论 -
高等排序(JavaScript)
归并排序归并排序是一种分治算法,其思想是将原始数组切分成为较小的数组,知道每一个小树组只有一个位置,接着将小树组归并成为较大的数组,直到最后只有一个排序完毕的大数组。 1.将给定的包含n个元素的局部数组分割成为两个局部数组,每个数组包含n/2个元素 2.对两个数组执行排序 3.将排序好的两个数组整合成为一个大数组快速排序和归并排序一样,快速排序也使用分治的方法,将原始数组分 为较小的原创 2017-07-29 15:25:28 · 209 阅读 · 0 评论 -
数据结构——集合(JavaScript)
初始化集合function Set(){ var items = {};//对象不允许一个键指向两个不同的属性,保证了集合元素的唯一性 this.has = function(value){//判断值是否在集合中 return items.hasOwnProperty(value);//判断是否为自有属性 } this.add = function(v原创 2017-04-27 13:57:34 · 173 阅读 · 0 评论 -
数据结构——队列(JavaScript)
队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。 队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。 举个栗子: 队列的创建function Queue(){//首先创建一个类 var item = []; this.addToQueue = function(){//在队列尾部添加一个或多个新项原创 2017-04-16 19:27:27 · 238 阅读 · 0 评论 -
栈的使用(JavaScript)
从十进制转换成二进制function Stack(){//首先,申明一个类 var item = []; //使用一种数据结构来保存栈内元素 //声明常用方法 this.push = function(v){//添加一个(或几个)新元素到栈顶 item.push(v); } this.pop = function(){//移除栈顶的元素,同时原创 2017-04-14 19:45:27 · 187 阅读 · 0 评论 -
数据结构——数组(JavaScript)
数组初始化 var arr1 = []; //最简单快捷的方式 var arr2 = new Arrey(7): //可以创建有指定长度的数组 var arr3 = new Array('a','b','c'); //将数组值直接创建 注意 1.数组中的值不一定是常量,也可以使表达式 2.如果省略数组中的某个值,省略的元素会被赋值为undefined 3.数组有可原创 2017-04-12 20:17:48 · 315 阅读 · 0 评论 -
数据结构——栈(JavaScript)
栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的 末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 举个栗子,差不多这样子。。。 栈的创建使用数组创建的栈function Stack(){//首先,申明一个类 var item = []; //使用一种数据结构来保存栈内元素 //声明常用方法 this.push原创 2017-04-14 18:01:05 · 374 阅读 · 0 评论 -
数据结构——链表(JavaScript)
我们可以想象成。。。。 链表存储有序的元素集合,在内存中元素是不连续的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。 单向链表首先,我们需要创建一个数据结构用来作为链表的节点,节点包含value(用来存放数值)与next(用来存放下一个数据节点的地址)。 然后我们再实现一些方法。 方法 append(value):向列表尾插一个新的节点 i原创 2017-04-17 18:14:55 · 491 阅读 · 0 评论 -
数据结构——字典(JavaScript)
创建字典function Dictionary(){//首先申明一个类 var items = {}; this.set = function(Key,value){//向字典中添加新元素 items[Key] = value; } this.remove = function(Key){//通过使用键值对来从字典中移除键值对应的数据值原创 2017-07-24 18:51:05 · 245 阅读 · 0 评论