question(题意):
Describe a O(n lg(n))-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements in S whose sum is exactly x.
设计一个O(n ...
分类:
编程语言 时间:
2014-12-23 09:05:46
阅读次数:
239
折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,...
分类:
编程语言 时间:
2014-12-23 00:14:40
阅读次数:
321
Problem Description
Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate if you can find the three numbers Ai, Bj, Ck, which satisfy the formula Ai+Bj...
分类:
编程语言 时间:
2014-12-22 16:17:44
阅读次数:
252
通过前面的学习,我们知道,有序数组可以利用二分查找法快速的查找特定的值,时间复杂度为O(log2N),但是插入数据时很慢,时间复杂度为O(N);链表的插入和删除速度都很快,时间复杂度为O(1),但是查找特定值很慢,时间复杂度为O(N)。
那么,有没有一种数据结构既能像有序数组那样快速的查找数据,又能像链表那样快速的插入数据呢?树就能满足这种要求。不过依然是以算法的复杂度为代价
在编程的世界里,...
分类:
其他好文 时间:
2014-12-22 09:28:38
阅读次数:
203
先看二分查找的一般写法
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 100005
#define ll __int64
int n,a[N];
int findd(int x)
{
int l=0,r=n-1;
while(l<=r)
{...
分类:
其他好文 时间:
2014-12-19 13:05:12
阅读次数:
173
二分查找感觉还是挺简单的,我写的这程序是处理有序表的查找,主要思想是这么回事:已知元素个数,找到位于中间元素的值a[mid],并与要找的value比较,如果大于,那么就从0到mid-1中继续查找。要考虑的问题,如果元素个数为0,数组中没有要查找的元素,还有找到元素怎么返回。#include#incl...
分类:
其他好文 时间:
2014-12-18 11:50:36
阅读次数:
130
/* Date:2014.12.16
折半查找算法,也叫二分查找,用于对拥有唯一元素的查找。
需要先经过按序排序后才能进行。只对有序表适用。
*/
//先快速排序:(此处增序,也可降序)
void QuickSort(int *arr,int left,int right)
{
int key,temp,ltemp,rtemp;
ltemp = left;
r...
分类:
编程语言 时间:
2014-12-17 12:52:34
阅读次数:
116
原题链接:https://oj.leetcode.com/problems/find-peak-element/
题目大意:给定一个相邻元素不相等的数组,找出其中的一个局部最大值,返回对应下标。
方法1:顺序遍历。
本题的一个重要特点是,从第一个元素开始,若其大于相邻的后续元素,则第一个元素就是一个局部最大值,返回即可。若其小于相邻的后续元素,则第二个元素大于第一个元素。如此,一一遍历数组,...
分类:
其他好文 时间:
2014-12-15 15:29:53
阅读次数:
112
二分查找:
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
代码不多也就几行;主要 start = 0; end = nLength -1;while(start
#include
using namespace std;
/* run this program using the console pauser...
分类:
编程语言 时间:
2014-12-14 22:48:24
阅读次数:
222
采用小的在多的进行二分查找的方法。设两个指向两个数组末尾的指针,取较小的那个数在另一个数组中二分查找,找到,则存在一个交集,并且将该目标数组的指针指向该位置前一个位置。如果没有找到,同样可以找到一个位置,使得目标数组中在该位置后的数肯定不在另一个数组中存在,直接移动该目标数组的指针指向该位置的前一个...
分类:
编程语言 时间:
2014-12-14 01:55:27
阅读次数:
215