算法
文章平均质量分 51
FelixClinton
这个作者很懒,什么都没留下…
展开
-
算法学习之(一)分治策略
许多有用的算法在结构上是递归的:为了解决一个给定的问题,算法一次或者多次的递归调用其自身以解决紧密相关的若干子问题。这些算法典型的遵循分治法是思想。分治法的思想将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。分治模式在每层递归时都有三个步骤:分解原问题为若干子问题:这些子问题都是原问题规模较小的实例。解决这些子问...原创 2018-03-15 22:09:04 · 848 阅读 · 0 评论 -
每日算法之—排序最短子数组
题目:给定整形数组nums,求需要排序的最短子数组的长度。如:nums=[1,5,4,3,2,6,7],输出结果为4。解释:只有[5,4,3,2]需要排序,故输出4。解决办法: 从前往后和从后往前两次遍历数组。从前往后遍历时,首先默认首元素为max,当遍历的当前值小于max时,记录下元素位置为p,否则更新max为当前元素。从后往前遍历时,默认尾元素为min,当遍历的...原创 2018-09-05 10:50:34 · 179 阅读 · 0 评论 -
每日算法之—数据区间划分
题目:给定一个只包含0,1,2的数组,要求把整个数组进行区间划分,把0划分到左边,1划分到中间,2划分到右边。如:数组为[0,1,2,1,0,1,2,2,1,0,1,2]划分结果为:[0,0,0,1,1,1,1,1,2,2,2,2]要求:空间复杂度为O(1),时间复杂度为O(n)。 解决思路:假想原始数组左边有一个长度为0的0区域,右边有一个长度为0的2区域,中间是1区...原创 2018-09-05 12:20:38 · 5292 阅读 · 0 评论 -
每日算法之—排序数组相邻最大差值
题目:给定一个无序整形数组,要求返回排序后相邻两个数的最大差值。例如:输入数组[1,2,3,5,9,6,8,7]排序后:[1,2,3,5,6,7,8,9]最大差值为5-3=2解决办法:1.对原数组进行排序,然后逐个求差值2.首先遍历数组,求得数组的最大值max和最小值min,然后将max-min的区间划分为n+1个桶,再遍历数组,将数组元素依次放入对应的桶中,最后一定有...原创 2018-09-05 15:21:54 · 530 阅读 · 0 评论 -
每日算法之——快速排序
快速排序快速排序的思想:选择一个基准数(轴),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小。然后再按次方法对这两部分的数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数组变得有序。排序过程大致如下:1.选定一个基准数(temp)作为轴,通常选最左或者最右的数作为轴;2声明两个变量i,j,i指向数组的最左端,j指向数组的...原创 2018-09-10 21:40:45 · 159 阅读 · 0 评论 -
每日算法之——常见排序算法集锦(算法之发展历程)
常见排序算法及发展历程所谓排序,就是将数据分为有序区和无序区,通过对无序区元素的调整并扩展有序区,最后达到所有元素都有序的状态。在排序界,常见(或者说常用)的算法主要有冒泡排序,选择排序、直接插入排序、希尔排序(其实不太常用)、堆排序、快速排序、归并排序。一些不太常用但是比较有技巧性的排序有:计数排序、位图排序、基数排序、桶排序、外部排序(一般结合hash然后多路归并)。在此,我们仅仅介绍...原创 2018-09-11 12:52:28 · 1323 阅读 · 0 评论 -
位图排序之bitMap实现
位图排序通常用在特定的大数据量的场景下,如对给定的20亿条无重复整形数据进行排序,要求使用的内存不能超过265M。此时我们可以采用位存储的方式来对数据进行排序。首先,申请一个20亿的bit数组,然后读取20亿的数据,找到当前读取的整数所在的bit的位置,将其置1,直到所有的数据都读完。第二,遍历bit数组,如果当前位置的bit位为1,则将下标输出到文件,否则判断下一个是否为1。p...原创 2018-08-17 15:41:56 · 446 阅读 · 0 评论