二分查找法又叫折半查找法,通过给定一个数,然后把这个数和数组中的中间值进行比较。 重要理解mid,min,max索引的变化就ok了! 原理:当要查找的数(key)比中间值(arr[mid])要小的时候,max就要=mid-1,当要查找的数(key)比中间值 (arr[mid])要大的时候,min就要 ...
分类:
其他好文 时间:
2017-09-24 23:28:04
阅读次数:
138
二分查找又称折半查找,对于有序表来说,它的优点是比较次数少,查找速度快,平均性能好。 二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a ...
分类:
其他好文 时间:
2017-09-23 17:14:03
阅读次数:
160
基本思想: 1)二分查找的前提是在有序元素列中进行查询,所以取元素列中间的元素array[mid]与要查找的元素比较。 2)如果查找的元素比中间位小(or大),则在中间位的左(or右)半段查找。 3)循环步骤1直到元素列头部与尾部重合 代码实现: 时间复杂度:O(logn) 空间复杂度:递归O(lo ...
分类:
其他好文 时间:
2017-09-23 00:09:18
阅读次数:
98
一.二叉排序树产生原因 为什么要有二叉排序树这种数据结构的产生?对于一个既要排序、又要支持高效的查找、插入和删除操作的数据元素集合,将其组织成一个什么样的数据结构能够满足要求?我们对于排序顺序表、排序单链表和散列表这几种数据结构进行分析: (1)排序顺序表,可以采用折半查找法,时间效率为O(log2 ...
分类:
编程语言 时间:
2017-09-17 11:42:39
阅读次数:
204
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出。 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几 ...
分类:
编程语言 时间:
2017-09-14 18:57:59
阅读次数:
283
//折半查找法,要求有序序列,默认由小到大
#include<iostream>
usingnamespacestd;
//普通方法
intBinSearch1(int*searchTable,intkey,intlen)
{
//最低位置索引low、最高位置索引high、中间位置索引mid
//中间位置的可能情况
//len为奇数时,mid为正中间位置mid的左侧..
分类:
其他好文 时间:
2017-09-14 18:32:07
阅读次数:
139
冒泡排序: 相邻元素两两比较,大的往后放。第一次排序完毕后,最大值就出现在最大索引出。此方法排序需要比较数组长度-1次 选择排序: 从0索引开始,一次和后面元素比较,小的往前放,第一次比较完毕后,最小值出现在最小索引处。 二分查找(折半查找): 前提:数组必须是有序的。 思想:每次都计算中间的那个元 ...
分类:
编程语言 时间:
2017-09-13 19:29:20
阅读次数:
270
question: code: result: ...
分类:
编程语言 时间:
2017-09-13 10:45:54
阅读次数:
182
定义:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前 ...
分类:
其他好文 时间:
2017-09-12 19:54:00
阅读次数:
170
/* 二分查找(折半查找) 思路: low和high表示下标,选择每个数组的中点作为基准,比较基准与key的值, 若大于基准,则移动low,反之移动high,等于则返回该值,不存在返回-1 遇到的问题:写成了死循环,无返回值 */ var arr = [1,4,5,7,3,9,8]; var ff ... ...
分类:
编程语言 时间:
2017-09-05 22:04:44
阅读次数:
170