JavaScript数据结构与算法
花生吃花生
这个作者很懒,什么都没留下…
展开
-
JavaScript实现插入排序
let arr = [1, 0, 3, 4, 6, 7, 8, 5, 9, 2];let temp = 0;for (let i = 1; i < arr.length; i++) {let j = i;while (j > 0) { if (arr[j] < arr[j - 1]) { temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; j--; } else { .原创 2021-11-28 23:45:00 · 328 阅读 · 0 评论 -
JavaScript二分查找
思想:所谓二分查找就是从中间分两半,然后比大小,如果比中间数大就去右边找,比中间数小就在左边找。然后递归。代码:const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];function binarySearch(arr, start, end, key) {if (start !== end) { // 找中间数的下标 const middle = Math.floor((start + end) / 2); // 找到就返回下标原创 2021-11-25 17:32:51 · 586 阅读 · 0 评论 -
JavaScript快速排序
快速排序算法思想:快速排序使用分治法和递归思想来进行操作。分治分治就是分而治之,把大问题化为小问题再进行求解。首先,给定一个数组,让我们来对数组中的元素进行排序,那么我们的想法是首先选定一个元素element,通常选定第一个元素。每一轮排序的目的就是将element放在正确的位置上,也就是他的左边都小于他,右边都大于他。让我们来设置前后两个指针,指针left指向数组的第一个数,指针j指向数组的最后一个数。开始时,将element拿出来,这个位置就空下来了。先看指针j指向的数字,如果这个数字小于ele原创 2021-11-25 17:00:02 · 256 阅读 · 0 评论 -
算法-有n步台阶,一次只能上1步或2步,共有多少种走法,递归实现
const manySteps = prompt('请输入数据') - 0;function fn(manySteps) { if (manySteps <= 2) { return manySteps; } else { return fn(manySteps - 1) + fn(manySteps - 2); }}let result = fn(manySteps);console.log(result.原创 2021-11-16 22:03:19 · 332 阅读 · 0 评论 -
JS 单链表
代码:原创 2021-11-11 21:24:53 · 1028 阅读 · 0 评论 -
JS数据结构 队列
代码:function Queue() {let arr = [];// 向队列尾部添加一个或多个新的项this.enqueue = function (...args) { for (let i = 0; i < args.length; i++) { arr.push(args[i]); }};// 移除队列的第一项,并且返回被移除的元素this.dequeue = function () { return arr.shift();};// 返原创 2021-11-09 21:31:32 · 508 阅读 · 0 评论 -
JS选择排序
代码:// 选择排序,时间复杂度为O(n²) // 选择排序即选出里面最小的放前面,在剩下的里面重复如此。 function sort(arr) { for (let i = 0; i < arr.length - 1; i++) { // 先令第一个数为最小值,则第一个数字的索引即为最小值索引 let minIndex = i; for (let j = i + 1; j < arr.le原创 2021-11-09 20:29:06 · 58 阅读 · 0 评论 -
JS冒泡排序
// 冒泡排序 时间复杂度O(n²) // 冒泡排序是相邻的两个元素进行比较,然后交换大小 function sort(arr) { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { let te.原创 2021-11-09 20:09:31 · 339 阅读 · 0 评论 -
JavaScript 数据结构 栈
直接上代码:// 创建一个栈function Stack() { // 保存栈中元素 let items = new Array(); // 添加一个或几个新元素到栈顶 this.push = function (...args) { for (let i = 0; i < args.length; i++) { items.push(args[i]); } }; // 移除栈顶元素,同时返回被移除的元素 this.pop =原创 2021-11-09 13:46:00 · 491 阅读 · 0 评论