随笔分类 -  算法

摘要:代码实现 let Stack = require('./01栈的封装.js') //简单应用: //封装函数:将十进制转成二进制(十转二的运算最后倒叙取余的特点符合栈'先进后出') let dec2bin=(decNumber)=>{ //1.定义一个栈对象,保存余数 var stack=new S 阅读全文
posted @ 2022-06-27 22:01 NaziriteGTC 阅读(241) 评论(0) 推荐(0)
摘要:栈的封装 /** * 栈常见的操作: * - push(element):添加一个新元素到栈顶位置; * - pop():移除栈顶的元素,同时返回被移除的元素; * - peek():返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它); * - isEmpty():如果栈里没有 阅读全文
posted @ 2022-06-27 21:58 NaziriteGTC 阅读(66) 评论(0) 推荐(0)
摘要:代码定义 /** * 优先级队列主要考虑的问题为: * 每个元素不再只是一个数据,还包含数据的优先级; * 在添加数据过程中,根据优先级放入到正确位置; */ // 封装优先级队列 function PriorityQueue() { // 封装属性 this.items = [] //内部类:在类 阅读全文
posted @ 2022-06-27 21:54 NaziriteGTC 阅读(44) 评论(0) 推荐(0)
摘要:// 队列的应用 let Queue = require('./01队列的封装') /** * 使用队列实现小游戏:击鼓传花, * 传入一组数据和设定的数字num,循环遍历数组内元素, * 遍历到的元素为指定数字num时将该元素删除,直至数组剩下一个元素。 */ // 队列应用:面试题:击鼓传花 l 阅读全文
posted @ 2022-06-27 21:50 NaziriteGTC 阅读(121) 评论(0) 推荐(0)
摘要:// 二、封装队列类 /** * 队列类的实现: * 队列的实现和栈一样,有两种方案: * - 基于数组实现; * - 基于链表实现; * 队列的常见操作: * - enqueue(element):向队列尾部添加一个(或多个)新的项; * - dequeue():移除队列的第一(即排在队列最前面的 阅读全文
posted @ 2022-06-27 21:42 NaziriteGTC 阅读(63) 评论(0) 推荐(0)
摘要:/**** * 利用现有的 1--5的随机函数,加工出1 -7的随机函数 * 此函数只能用,不能修改 * 等概率返回1~5 */ /** * 构造一个等概率的1-5 */ function oneTofive() { return Math.floor((Math.random() * 5) + 1 阅读全文
posted @ 2022-05-24 01:11 NaziriteGTC 阅读(50) 评论(2) 推荐(0)
摘要:/** * math.random()->是等概率返回【0--1) */ // 验证 math。random是等概率 function r(math){ var count=0 for(var i=0;i<math;i++){ if(Math.random()<0.3){ count++ } } r 阅读全文
posted @ 2022-05-24 01:10 NaziriteGTC 阅读(89) 评论(0) 推荐(0)
摘要:// 插入排序 function insertSort(arr) { if (arr.length < 2 || arr == null) { return } else { for (let i = 1; i < arr.length ; i++) { for (let j=i;j>0;j--) 阅读全文
posted @ 2022-05-20 12:52 NaziriteGTC 阅读(30) 评论(0) 推荐(0)
摘要:// 冒泡排序 function bubbleSort(arr) { // 排除特殊 if (arr.length < 2 || arr == null) { return } else { for (let j = 0; j < arr.length - 1; j++) { for (let i 阅读全文
posted @ 2022-05-20 11:35 NaziriteGTC 阅读(16) 评论(0) 推荐(0)
摘要:let arr = [7, 1, 3, 5, 1, 6, 8, 1, 3, 5, 7, 5, 6] function selectSort(arr) { // 排除边界值 if (arr == null || arr.length < 2) { return } else { // 遍历 for ( 阅读全文
posted @ 2022-05-20 01:21 NaziriteGTC 阅读(25) 评论(0) 推荐(0)
摘要:// 求 1!+2!+3!+....+n!的和 function sum(num) { // 定义变量,用于保存结果 var ans = 1 var sum=0 for (var i = 1; i <= num; i++) { // ans是每一次的阶层值 ans= ans * i // sum 保 阅读全文
posted @ 2022-05-20 00:17 NaziriteGTC 阅读(113) 评论(0) 推荐(0)
摘要:通过一个整形的2进制各个位和1与的结果来判断每个位置是0还是1 // 打印一个32位数 var f = function () { var num = 89079087987 for (var i = 31; i >= 0; i--) { // <<是移位,1向左移动31位后后面的有0来补, // 阅读全文
posted @ 2022-05-19 01:24 NaziriteGTC 阅读(44) 评论(0) 推荐(0)