
算法和数据结构
Paris one
me
展开
-
基础算法:快速排序和冒泡排序和堆排序和数组去重
冒泡排序:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。 快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近原创 2020-09-10 10:42:35 · 183 阅读 · 0 评论 -
C++总结
1、通过标准输入设备向输入流输入一行字符串有两种方式:get函数(一个一个读)和getline函数(读一行) int get(int x)——这个函数是自定义函数,函数名为get,传入一个int类型的参数x,返回值为int类型 2、for循环语句,两个分号三个句子,for (; x; x /= 10) 第一个句子是初始化用的,如果没有初始化的必要,就视为空语句,加上分号。 第二个句子作为判断条件,如果没有判断条件,也视为空语句,后加一个分号。这种情况,会无限循环,相当于while(1)。如果for的原创 2020-09-06 22:26:53 · 495 阅读 · 0 评论 -
深度优先算法DFS和广度优先算法BFS
DFS概念: 深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分 支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发 现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。 DFS步骤: 深度优先遍历图算法步骤: 1. 访问顶点v; 2. 依次从v的未被访问的邻接点出发,对图原创 2020-09-06 19:41:16 · 217 阅读 · 0 评论 -
JS中的数学函数总结
1、三次方函数 Math.pow() 2、绝对值函数 Math.abs(a,b):a为要操作的数,b决定取几次方 3、向上取整 Math.ceil() 4、向下取整 Math.floor() 5、四舍五入 Math.round() 6、找最大值 Math.max() 7、找最小值 Math.min() 8、产生随机数 Math.random() 产生0-1之间的随机数,前开后闭,即包含0不含1: var b = Math.random(); document.write(b); 要..原创 2020-08-14 10:59:09 · 2128 阅读 · 0 评论 -
return、break、continue
continue:结束本次循环,接着开始下次循环 break:完全结束一个循环 return:结束一个方法原创 2020-08-12 16:43:12 · 101 阅读 · 0 评论 -
剑指offer03:二维数组中的查找
二维数组中,即数组中前台数组,行数i=matrix.length,即一维数组的个数;列数j=matrix[0].length,即一维数组的列数 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 方法:数组降维 因为数组是从左向右递增,从上向下递增,所以选取右上角即第一行最后一列,matrix[0][col-1],来与target比较。如果相等,返回true,如果targ原创 2020-08-12 11:40:44 · 91 阅读 · 0 评论 -
剑指offer03:数组中重复的数字
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 解法一:哈希表,哈希表是数组和链表的集合,哈希表查找:map[value] /** * @param {number[]} nums * @return {number} */ var findRepeatNumber = function(nums) { var map={}; for原创 2020-08-12 10:57:06 · 150 阅读 · 0 评论