算法从入门到放弃
文章平均质量分 50
重温一遍数据结构和算法
远行MM
这个作者很懒,什么都没留下…
展开
-
sort排序
实际工作中,几乎不用自己写排序最常用的是数组自带的sort方法实现排序1、从大到小排序(数值比较)//传的数组中的元素为id_num格式function sortArr(arr):Array{arr.sort(function(o1:*,o2*)):int{ var id1:int = parseInt(o1.spliut('_')[0]); var num...原创 2018-08-07 10:19:12 · 2369 阅读 · 0 评论 -
归并排序(分治策略)
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 private var arrTest:Array=[9, 8, 7, 6, 5, 4, 3, 11, 2...原创 2019-05-08 14:32:33 · 1213 阅读 · 0 评论 -
二分查找-最省内存的快速查找实现方式
首先,二分查找的使用对象是有序数据集合。如果是无序的数据,则不能使用二分查找。二分查找的时间复杂度为O(logn),插入和删除操作少,但是查找频繁时,可以考虑将数据设计成有数数组数据,用二分查找进行查找。当插入和删除频繁时,如果设计成有序数组数据,则需要频繁的修改数组数据,此时不宜用二分查找。二分查找可以理解为生活中的折半查找,每次都取中间值,直至找到指定值或者最后查找区间长度为1。二分查找依...原创 2019-05-07 21:50:47 · 171 阅读 · 0 评论 -
双指针法降低时间复杂度
六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。第一种是常见做法,两层for循环,时间复杂度为O(n^2),基本上都能想...原创 2019-04-25 15:20:30 · 1927 阅读 · 1 评论 -
算法复杂度分析
数据结构和算法的终极目标是“快”和“省”,衡量代码的执行效率,最直接的方法就是把代码跑一遍,通过统计、监控就能得到算法的执行时间和占用内存的情况。但是这样做的问题是测试结果非常依赖测试环境以及测试结果受规模的影响很大。同样的代码,在i3和i7上跑,执行的时间明显不一样。即使在同一台机器上跑,同样的代码得出的统计、监控结果也可能不一样,而且,当有多种算法可供选择时,总不能把每种算法都...原创 2019-04-11 23:16:01 · 153 阅读 · 0 评论 -
贪心算法
贪心算法要求在每一步求解时,选择一个最优的解,使得最终得到的方案为最优解活着近似最优解(贪心算法算出的解不一定是最优解,但一定是近似最优解)实例:一堆纸币,1,5,10,50,100每种纸币的数量分别为4,6,7,1,2求解,最少需要多少张纸币能够拼出272元private function coinChange(RMBCount:int):Object{ var _...原创 2018-12-25 14:38:47 · 115 阅读 · 0 评论 -
快速排序
快速排序算法给出一个数组[3,1,5,3,7,9,8,10,43,11]进行快速排序第一步,两个指针,指向数组头部和尾部第二步,选定参照对象,默认为头指针最初指向的元素的值,在这里,就是3第三步,尾指针从尾部向前移动,知道找到小于参照值(3)的元素,停止移动第四步,头指针,从头向尾移动,知道找到大于参照值(3)的元素,停止移动注意:要先移动尾指针,再移动头指针,如果在头...原创 2018-12-24 12:05:31 · 151 阅读 · 0 评论 -
求拼成某一面值有多少种拼法
之前做过的一个笔试题,当时怎么也没想出来,今天闲着想了一下,下面是题目和JS实现代码有面值为A的硬币m个,有面值为B的硬币n个,现欲拼出总面值为C,问有多少种拼法?并写出每种拼法各包含A,B两种硬币多少个?function getResult(A,m,B,n,C){ this.arrA=[]; this.arrB=[]; for(i=0;i<=m;i...原创 2018-04-25 23:45:10 · 409 阅读 · 0 评论