码迷,mamicode.com
首页 >  
搜索关键字:有序数组    ( 1005个结果
算法题之有序数组被折断后的查找
给出一个有序数组,假设其为升序,随机找到一个点,将这个点后面的序列移到数组前面,构成一个新的序列。要求对这个新的数组进行查找,找不到返回-1,否则返回其在数组中的位置。比如输入数组[7,8,9,1,2,3,4,5,6]查找1,返回3;查找8,返回1;查找0,返回-1;int searchDisord...
分类:编程语言   时间:2015-06-09 19:22:36    阅读次数:132
求两个有序整型数组的交集
1. 问题描述  有两个有序的整型数组a和b(没有重复元素),他们的长度分别为lenA和lenB,求出他们的共同元素。   例如:a = 0,1,3,5,7,9,11;b = 2,3,4,7,11;   它们的交集为{3,7,11}。2. 方法思路  求交集的方法有很多种,但数组的长度会影响算法的效率。2.1 长度相当时,可采取的算法2.1.1 二路归并  对于数组a,b分别以i,j从头遍历数组...
分类:编程语言   时间:2015-06-06 23:35:21    阅读次数:151
高效合并两个有序数组(Merge Sorted Array)
问题: 两个有序数组,合并成一个有序数组,假设第一个数组空间足够容纳两个数组。 分析: 考虑到num1数组很大,可以直接在num1数组上进行合并,但是要讲究效率。 如果单纯从前往后合并,那么效率会非常低,因为a数组后面的数字需要不停的移动。 换一种思路,我们采用从后往前合并,首先计算出总长度,设置一个指针从num1数组最后往前移动。...
分类:编程语言   时间:2015-06-04 01:04:46    阅读次数:115
二分法计算有序数组中数字出现的次数
1. 问题描述  在给定的一个已经排好序的数组中,找出指定数字出现的次数。例如数组[1,2,3,4,4,4,4,6,8,9]中4出现的次数为4次。2. 思路与方法  此问题可以在二分法的基础上进行改进。假设数组a为递增的数列,需要查找的数字为num,可以分别查找num在数组a中出现的起始位置和最后一次的位置,通过二者的差计算出数字num在数组a中出现的次数。   c++代码如下:#include...
分类:编程语言   时间:2015-06-03 21:33:11    阅读次数:188
[Lintcode] Maximum Gap Problem
问题描述在一个无序的数组中,如果对其进行排序,然后扫描一遍有序数组,可以获得相邻两元素的最大差值,比如 {-1, 2, 4, 9},那么最大差值就是4和9之间,是5. 现在如果不对原始数组进行排序,有什么好的方案,来获取有序形式下的最大差值? Given an unsorted array, find the maximum difference between the successive...
分类:其他好文   时间:2015-05-31 16:53:29    阅读次数:109
策略模式
策略模式定义了算法族,这些算法被分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。(此定义来源于《深入浅出设计模式》) 下面举一个根据这模式设计并实现有序数组的例子。 算法族是几个排序算法,它们都继承自Sort接口: package sort; public interface Sort { /** * 这是需要变化的地方。将它独立处理,和不需要变化的...
分类:其他好文   时间:2015-05-31 14:05:32    阅读次数:131
二分查找-Java版
/** * * 二分查找算法 * * * * @param srcArray 有序数组 * * @param target 查找元素 * * @return srcArray数组下标,没找到返回-1 */ public ...
分类:编程语言   时间:2015-05-30 19:45:26    阅读次数:146
旋转数组的查找问题
题目:一个数组是由一个递增数列右移若干位形成的,比如{4,5,1,2,3}是由{1,2,3,4,5}左移两位形成的,在这种数组中查找某一个数。解题思路如下: 首先获取元素分裂点,时间复杂度为O(log(n)) 因为旋转数组是由递增数组右移得到,因此旋转数组中的第一个元素是整个数组的中间元素,比较待查找元素与第一个元素,如果待查找元素大于等于第一个元素,表明待查找元素在前半段有序数组中;如果不是这...
分类:编程语言   时间:2015-05-30 10:48:00    阅读次数:179
算法-二分查找
二分查找算法是在有序数组中用到的较为频繁的一种算法,同样是一种很高效的算法,我们最长遇到的判断一个数字是不是在数组中,前提是数组是有效的,通常我们会数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{0,1, 2, 3, 4, 5, .....
分类:编程语言   时间:2015-05-29 11:23:00    阅读次数:152
小算法,大思路,用最优代码阐述编码风格
//two_arg.cpp//题目:两个有序数组,求是否有共同元素(假设是两个升序数组)。//要求:时间复杂度:O(n),空间复杂度S(1)。//算法描述:一次遍历,两个指针分别开始分别指向两个数组。循环控制为是否到两个数组的末尾//每次循环比较两个指针指向的元素的大小,将小的指针后移,..
分类:编程语言   时间:2015-05-27 01:08:48    阅读次数:182
1005条   上一页 1 ... 79 80 81 82 83 ... 101 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!