随笔分类 - 算法
摘要:- 场景: 假设整个平面式画布,原点在平面中心点,上下分别为 1,-1,左右分别为 -1,1; 怎么将鼠标位置归一化呢? window.addEventListener('click', (event) => { console.log(event.clientX, event.clientY);
阅读全文
摘要:- // 复习一下矩阵的乘法 // [a00 a01 a02] [b00 b01 b02] // A=[a10 a11 a12] B=[b10 b11 b12] // [a20 a21 a22] [b20 b21 b22] // 将两个3*3的矩阵A,B相乘得到 // [a00*b00 + a01*
阅读全文
摘要:- 每个十进制都可以转换为二进制: 3: 0011 8: 1000 15: 1111 如果让二进制的每一位代表一个有具体含义的状态,那么这种存储状态的方式就会大大节省资源。 提供一个十进制的数字怎么获得它的二进制形式指定位置的数字呢? 比如获取15对应二进制的索引为1的状态 1、将15右移1位 01
阅读全文
摘要:- const array = [10, 7, 2, 100, 5, 5, 230, 400, 1, -2, 8]; // 希尔排序 // 希尔排序是插入排序的升级版(减少排序次数) // 把数组长度的一半作为第一个增量,这里为5 // 把数组分为5组 // [10(1), 7(2), 2(3),
阅读全文
摘要:- const array = [10, 7, 2, 100, 5, 5, 230, 400, 1, -2]; // 快速排序 // 取一个基准值 // 根据基准值分出来 小于基准值的数组 和 大于基准值的数组 // 进入递归 // 当递归的数组小于两个时 跳出递归 将这个数组返回 基准条件 //
阅读全文
摘要:- const array = [10, 7, 2, 100, 5, 5, 230, 400, 1, -2]; // 归并排序 // 分两步:1、拆分, 2、归并 // 1、拆分:将数组拆分成两个A、B两个数组,然后A、B两个数组继续拆分,直到每个数组剩一个数据 //第一次拆分 [10, 7, 2,
阅读全文
摘要:- const array = [10, 7, 2, 100, 5, 5, 230, 400, 1, -2]; // 插入排序 // 把第一个数看做一个新数组,后面的数据依次插入 // 找一个基数,用基数和新数组的数从右到左依次对比,比基数大的往右移(索引加1),直到找到比基数小的数,在它后面插入
阅读全文
摘要:- const array = [10, 7, 2, 100, 5, 5, 230, 400, 1, -2]; // 选择排序 // 找到数组中的最小值,放到数组的第1个位置 // 接着找到第2个最小值,将其放到第2个位置 // 执行n-1轮,完成排序 function selectSort(arr
阅读全文
摘要:- const array = [10, 7, 2, 100, 5, 5, 230, 400, 1, -2]; // 冒泡排序 // 比较相邻的两个数,把大的值放在后面; // 一轮下来会找到1个最大值,排在最后面,每执行一轮,就少对比一个值 (len - i - 1) // 执行len - 1 轮
阅读全文
摘要:- 今天遇到一个需要浮点数相加减的需求 js中浮点数运算结果并不准,例如 0.1 + 0.2 !== 0.3 0.55 * 100 !== 55 8.2 * 100 !== 820 在计算过程中会存在很多误差 以下是浮点数的 加法和减法: export const float = function
阅读全文
摘要:- 主要用到while循环、还有让一个函数执行多次,先生成一个指定长度的数组,然后循环执行 例如,在0-9之间取随机整数,不包含1 、2 、3 、 4 、 5 、6 、7 、8 let arr = [1,2,3,4,5,6,7,8]; function genarateRandom(){ let r
阅读全文
摘要:举个栗子: 对下面数组进行排序: let originArray = [[45, 26, 78, [77, 23], 66], 24, 63,63, [45, 10], 17, 31, 96, 50]; 分治法; function quickSort(arr){ arr = arr.join(","
阅读全文
摘要:。 。 function fomatFloat(num,n){ var f = parseFloat(num); if(isNaN(f)){ return false; } f = Math.round(f*Math.pow(10, n))/Math.pow(10, n); // n 幂 var s
阅读全文
摘要:。 function kilocharacter(number){ if(number "" || number ==null){ return ''; } if(!isNaN(number)){ var baseLen = 3; var str = String(number) if(str.in
阅读全文
摘要:。 function versionStringCompare (prerVersion='', lastVersion=''){ var sources = prerVersion.split('.'); var dests = lastVersion.split('.'); var maxL =
阅读全文
摘要:。 let arr = [1,2,1,1,3,3,3,4,5]; console.log(arrayIsRepet(arr)); function arrayIsRepet(arr){//判断数组中存在重复元素 let b = []; let c = []; arr.forEach(item =>
阅读全文
摘要:。 思路:两个区间,两者的最小值中的最大值 <= 两者最大值的最小值时 就存在交集 let arr1 = [1,4]; let arr2 = [2,5]; let arr3 = [5,2]; let arr4 = [4,5]; let arr5 = [9,5]; let arr6 = [1,4];
阅读全文