自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 排序算法--希尔排序

一.希尔排序的思路希尔排序主要通过对数据进行分组实现的排序根据设定的增量(gap)将数据分为gap个组(组数等于gap),再在每个分组中进行局部排序假如有数组有10个数据,第1个数据为黑色,增量为5。那么第二个为黑色的数据index=5,第3个数据为黑色的数据index = 10(不存在)。所以黑色的数据每组只有2个,10 / 2 = 5一共可分5组,即组数等于增量gap。排序之后,减小增量,继续分组,再次进行局部排序,直到增量gap=1为止。随后只需进行微调就可完成数组的排序二.

2021-01-29 19:22:08 134

原创 排序算法--插入排序

一.插入排序的思路插入排序思想的核心是局部有序比如在一个队列中的队员,我们选择其中一个作为被标记的队员这个被标记的队员左边的所有队员已经是局部有序的这意味着在队列中,有一部分人是按顺序排好的,另一部分还没有顺序从第一个元素开始,该元素可以认为是已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位重复上一步骤,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置后,重复上面的步骤二.插入排序的代码ArrayList

2021-01-27 16:02:32 918

原创 排序算法--选择排序

一.选择排序的思路选定第一个索引位置,然后和后面的元素依次比较如果后面的元素,小于第一个元素的值,则交换位置经过一轮比较后,可以确定第一位置是最小的可以看出选择排序,第一轮会选出最小值,第二轮会选出第二小的值,直到最后二.选择排序的代码ArrayList.prototype.selectsort = function(){ var length = this.array.length //1.外层循环:从0位置开始取数据 for(var j = 0; j < length - 1

2021-01-26 20:28:18 717

原创 排序算法--冒泡排序

首先我们创建一个列表类,将要排序的元素放在一个数组中,便于后期插入和转化function ArrayList(){ //属性 this.array = [] //方法 //将数据可以插入到数组中的方法 ArrayList.prototype.insert = function(item){ this.array.push(item) } //toString方法 ArrayList.prototype.toString = function(){ return this.array

2021-01-25 22:50:16 1328

原创 JS数据结构-红黑树-基本规则及操作

一.红黑树的规则红黑树,除了符合二叉搜索树的基本规律外,还添加了以下特性:节点是红色或黑色的根节点是黑色的每个叶子节点都是黑色的空节点(NIL节点):如果该节点是含有数据的节点,并且其没有左、右子节点,那么要用NIL节点补齐每个红色节点的两个子节点都是黑色的(从每个叶子节点到根节点的所有路径上不能有两个连续的红色节点)从任一节点到其每个叶子节点的所有路径上都包含数目相同的黑色节点二.红黑树的相对平衡上述的约束,确保了红黑树的关键特性:从根到叶子的最长可能路径,不会超过最短可能路径的

2021-01-17 18:09:49 203

原创 JS数据结构-树结构-基本理论

一.树的术语树(tree):n(n>=0)个节点构成的有限集合,当n=0时,称为空树对于任一棵非空树(n>0),它具备以下性质:a.树中有一个称为“根(root)”的特殊节点,用r表示b.其余节点可分为m(m>0)个互不相交的有限集T1,T2,…Tm,其中每个集合本身又是一棵树,称为原来树的“子树(SubTree)”二.二叉树如果树中的每个节点最多只能有两个子节点,这样的树就称为“二叉树”。实际上,所有的树都可以用二叉树模拟出来二叉树的特性:a.一个二叉树第i层的最大

2021-01-14 19:59:33 423

原创 JS数据结构-对比数组、链表、哈希表和树的优缺点

一.数组优点:数组的主要优点是根据下标值访问效率会很高但是当我们希望通过内容来查找元素的对应位置时,比较好的方法是先对数组进行排序,然后二分查找(时间复杂度为O(logN))缺点:需要先对数组进行排序,生成有序数组,才能提高查找效率另外数组在删除和插入数据时,需要有大量的位移操作,效率很低二.链表优点:链表的插入和删除操作效率都很高缺点:查找效率很低,需要从头开始依次访问链表中的每个数据项,直到查找成功,即线性查找(时间复杂度为O(N))即使插入和删除效率都很高,但是如

2021-01-12 20:07:19 1362

原创 JS数据结构-哈希表-基本操作

一.哈希表实现

2021-01-11 20:37:38 436

原创 JS数据结构-哈希表-扩容操作

一.哈希表扩容HashTable.prototype.resize = function(newLimit){ // 1.保存旧的数组内容 var oldStorage = this.storage // 2.重置所有的属性 this.storage = [] this.count = 0 this.limit = newLimit // 3.遍历oldStorage中所有的bucket for(var i = 0; i < oldStorage.length; i++){

2021-01-11 17:37:58 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除