二分查找算法,对数据进行查找并且显示位置。核心思想:将所查找数据与查询数组中间的数进行比较,findValrightIndex) 8 { 9 //
提示找不到,防止无穷递归10 document.write("找不到");11 retur...
分类:
编程语言 时间:
2014-07-22 23:09:35
阅读次数:
304
一. 什么是二分查找
二分查找又称为折半查找,该算法的思想是将数列按序排列,采用跳跃式方法进行查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。以此类推不断缩小搜索范围。
二. 二分查找的条件
二分查找的先决条件是查找的数列必须是有序的。
三. 二分查找的优缺点
优点:比较次数少,查找速度快,平均性能好;...
分类:
编程语言 时间:
2014-07-22 23:00:14
阅读次数:
512
四、递归 递归是函数调用自身的一种特殊的编程技术,其应用主要在以下几个方面: 阶乘
在java当中的基本形式是: Public void mothed(int n){//当满足某条件时: Mothed(n‐1); } 递归二分查找
Java二分查找实现,欢迎大家提...
分类:
编程语言 时间:
2014-05-10 20:13:19
阅读次数:
380
动规基础:最长递增子序列的三种解法。附详解和代码。第一种:转化成LCS问题求解O(n*n)。第二种:设d[i]为以第i个元素结尾的最长递增子序列的长度O(n*n)。第三种:二分查找优化O(nlogn)。...
分类:
其他好文 时间:
2014-05-10 08:36:18
阅读次数:
462
剑指offer上的第一道题目,在九度OJ上测试通过
题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入:
输入可能包含多个测试样例,对于每个测试案例,
输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的矩阵的行数和列数。
输入的第二行包括一个整数t(1<=t<=1000000):代表要查找的数字。
接下来的m行,每行有n个数,代表题目所给出的m行n列的矩...
分类:
其他好文 时间:
2014-05-04 18:26:36
阅读次数:
348
题目大意:先给定n个数字,现在要求算出这n个数字的两两之和保存到sum数组,然后在给定m个数,要求找到和每一个数最接近的sum[i];
挨个计算每个属于其他数之间的sum,然后排序;
查找时有两种方法:二分查找&&双向查找;当然二分查找的效率比后者高了很多,但是都能AC。
提供一条新思路,并不一定非要用二分。
双向查找:
#include
#include
#include
using ...
分类:
其他好文 时间:
2014-05-01 18:43:34
阅读次数:
256
Cable master
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 21071
Accepted: 4542
Description
Inhabitants of the Wonderland have decided to hold a regional p...
分类:
其他好文 时间:
2014-04-29 13:44:22
阅读次数:
360
Aggressive cows
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 5436
Accepted: 2720
Description
Farmer John has built a new long barn, with N (2 <= N <= 100,...
分类:
其他好文 时间:
2014-04-29 13:22:21
阅读次数:
304
这题就是给了你三种操作,
1:往容器中一个元素 x
2::把容器中的元素x删除
3:查询比 x大的第k个数
想法:添加元素跟删除元素 直接是以数本身为序号然后以 value值为1和-1即可,相当于计数,至于找比x第k个大的数,那就看看当前往后数k个数的第一个数是哪个就可以了,一开始直接找出来,然后往后暴力的扫了一遍,结果错了,没关系,反应很快,直接改了个二分查找,然后就过了,弄清...
分类:
其他好文 时间:
2014-04-29 13:11:21
阅读次数:
326
【二分查找】
针对有序数组,性能非常好。
【时间复杂度】
logn
【代码】
#include
#include
//非递归实现二分查找
int BinarySearch1(int a[], int n, int key)
{
int left, right;
int mid;
left = 0;
right = n - 1;
while(left <= right)
...
分类:
其他好文 时间:
2014-04-27 19:42:22
阅读次数:
538