![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js之数据结构与算法
文章平均质量分 62
huanxiangcoco
菜鸟一枚,记录所学
展开
-
js之普通/高效判断质数
/* *质数:只能被1和自身整除,不能被2到(num-1)整除 */ //普遍方法判断质数 function isPrime(num) { for (let i = 2; i < num; i++) { if (num % i == 0) { return false; } } return false; } /* *高效判断质数法 *一个数不能被大于2且小于自身开平方根的数整除,即是质数 */ function原创 2020-10-04 18:00:41 · 452 阅读 · 1 评论 -
js之快速排序
/* *分而治之 */ function quickSort(arr) { if (arr.length == 0) { return []; //要返回数组 } let mid = arr[0]; let leftArr = []; let rightArr = []; for (let i = 1; i < arr.length; i++) { if (arr[i] < mid) {原创 2020-10-04 17:58:59 · 101 阅读 · 0 评论 -
js之归并排序
function mergeSort(arr) { if (arr.length == 1) { return arr; } let leftArr = []; let rightArr = []; let mid = Math.floor(arr.length / 2); leftArr = arr.splice(0, mid); rightArr = arr; //剩下的部分 return merge(mergeSort(l原创 2020-10-04 17:57:40 · 127 阅读 · 0 评论 -
js之选择排序/插入排序
思路: 从数组开头开始,将第一个元素与其他元素相比,检查完所有元素后,最小的元素放到数组的第一个位置,然后算法从第二个位置开始。 代码: for(var i=0;i<arr.length-1;i++){ var min=i; for(var j=i+1;j<arr.length;j++){ if(arr[min]>arr[j]){ min=j...原创 2019-09-25 12:47:28 · 144 阅读 · 0 评论 -
js之冒泡排序
思路:每遍历一次找出数组中最大值放在最末尾,接着下一次遍历就数组长度-1,继续找出这次数组中的最大值。 function bubble(arr){ for(var i=0;i<arr.length-1;i++){ /*最后一次遍历数组只剩一个元素,*无需再遍历 所以arr.length-1 */ for(j=0;j<arr.length-1-i;j++){ if(arr[j]>a...原创 2019-09-25 10:01:57 · 98 阅读 · 0 评论 -
js之查找数组中重复出现的值/数组去重
/* 查找数组中重复的元素 */ function del(array){ var arr=[]; for(var i=0;i<array.length;i++){ if(array.indexOf(array[i])!=array.lastIndexOf(array[i])&&arr.indexOf(array[i]) == -1){ arr.push(array[i]);...原创 2019-09-23 13:15:37 · 2185 阅读 · 0 评论 -
js之二分查找/计算已排好序数组中某个数重复次数
1.二分查找: 如果查找数大于中间值,则往中间值的右边找,反之,往左边找,当所找的值等于中间值则找到。 /*二分查找 数组已排好序才使用 */ function binSearch(arr,data){ var low=0;//数组最左位置 var high=arr.length-1;//数组最右位置 while(low<=high){ //Math.floor:向下取整 var mid=M...原创 2019-09-23 14:10:25 · 354 阅读 · 0 评论 -
js之二叉搜索树(BST Binary Search Tree)
/* 1.BST Binary Search Tree 2.可以为空 3.不为空时,左子树的所有键值小于根节点键值,右子树所有键值大于根节点键值 3.左右子树本身也都是二叉搜索树 */ function binarySearchTree() { this.root = null; function Node(key) { this.key = key; this.left = null; this.right = null; }原创 2020-10-04 17:41:24 · 93 阅读 · 0 评论 -
js之集合
/* 1.集合元素没有顺序 2.集合元素不能重复,即元素唯一 */ function setData() { this.items = {}; //判断集合是否有元素 setData.prototype.hasOwn = function(value) { return this.items.hasOwnProperty(value); } //添加元素 setData.prototype.enData = functi原创 2020-10-04 17:38:59 · 1354 阅读 · 0 评论 -
js之双链表
/* 1.从头遍历到尾,也可以从尾遍历到头 2.头部、尾部指针 3.节点有前后指向 */ function doubleLinkedList() { this.head = null; this.tail = null; this.length = 0; function Node(data) { this.data = data; this.prev = null; this.next = null; } /原创 2020-10-04 17:34:18 · 114 阅读 · 0 评论 -
单链表
/* 1.内存空间不必是连续的 2.创建时不用固定大小 3.插入、删除数据,时间复杂度O(1) 4.有数据时head默认指向第一个,无数据时,head指向null */ function linkedList() { this.head = null; function Node(data) { this.data = data; //创建时不知道下一个指向谁,默认指向null this.next = null; } //记录原创 2020-10-04 00:18:41 · 71 阅读 · 0 评论 -
队列、优先队列
队列 /* 1.先进先出 FIFO(first in first out) 2.队尾添加元素,队首删除元素 */ function Queue() { this.items = []; //添加元素 Queue.prototype.enQueue = function(element) { this.items.push(element) } //删除元素 Queue.prototype.deQueue = functi原创 2020-10-04 00:16:12 · 94 阅读 · 0 评论 -
js之栈
/* 1.后进先出 LIFO(Last in first out) 2.栈顶进出 */ function Stack() { this.items = []; //添加操作 Stack.prototype.push = function(element) { this.items.push(element) } //返回最后一个元素 Stack.prototype.pop = function() {原创 2020-10-04 00:13:52 · 100 阅读 · 0 评论