数据结构基础算法整理归纳:二分查找算法(一)
2018-02-18 23:00
567 查看
如今,对于学生来说,面试各大公司,免不了要考察对于数据结构的基础算法的掌握情况。由于自己的学习时间过长,对于这些基础算法的掌握有些遗忘,面试的时候碰了一鼻子的灰,加之学习算法的时候使用C语言学习,为何适应自己所熟悉的语法,故在此总结一下常用的算法思路,并使用JAVA和Python实现基础算法,并运行调通。
一、二分查找算法。
二分查找(折半查找)算法的基本思路如下:首先,假设表中元素是按升序排列,将表中间位置的值与查找关键字比较,如果两者值相等,则查找成功;否则利用中间位置的索引将表分成前、后两个子表,如果中间位置的值大于查找关键字,则进一步查找前半边的子表,否则进一步查找后半边的子表。重复以上过程,直到找到满足条件的索引,使查找成功,返回索引,或直到子表不存在为止,此时查找不成功,返回0。JAVA 代码如下:int ef(int key,int [] a) {
int high=a.length;
int low=0;
int num=0;
int mid=0;
while(a.length!=0) {
mid=(high+low)/2;
if (a[mid]==key){
num=mid;
return num;}
if(key<a[mid]) {
high=(high+low)/2;}
if(key>a[mid]) {
low=(high+low)/2;}}
return 0;}
Python 代码如下:def ef(arry, num):
low = 0 # 最小数下标
high = len(arry) - 1 # 最大数下标
while len(arry)!=0:
mid = int((low + high) / 2 ) # 中间数下标
if arry[mid] == num: # 如果中间数下标等于num, 返回
return mid
elif num< arry[mid]: # 如果num在中间数左边, 移动high下标
high = mid - 1
else: # 如果num在中间数右边, 移动low下标
low = mid + 1
return None# num不存在, 返回None
rs = ef(list(range(1, 10)), 8)
print(rs)
一、二分查找算法。
二分查找(折半查找)算法的基本思路如下:首先,假设表中元素是按升序排列,将表中间位置的值与查找关键字比较,如果两者值相等,则查找成功;否则利用中间位置的索引将表分成前、后两个子表,如果中间位置的值大于查找关键字,则进一步查找前半边的子表,否则进一步查找后半边的子表。重复以上过程,直到找到满足条件的索引,使查找成功,返回索引,或直到子表不存在为止,此时查找不成功,返回0。JAVA 代码如下:int ef(int key,int [] a) {
int high=a.length;
int low=0;
int num=0;
int mid=0;
while(a.length!=0) {
mid=(high+low)/2;
if (a[mid]==key){
num=mid;
return num;}
if(key<a[mid]) {
high=(high+low)/2;}
if(key>a[mid]) {
low=(high+low)/2;}}
return 0;}
Python 代码如下:def ef(arry, num):
low = 0 # 最小数下标
high = len(arry) - 1 # 最大数下标
while len(arry)!=0:
mid = int((low + high) / 2 ) # 中间数下标
if arry[mid] == num: # 如果中间数下标等于num, 返回
return mid
elif num< arry[mid]: # 如果num在中间数左边, 移动high下标
high = mid - 1
else: # 如果num在中间数右边, 移动low下标
low = mid + 1
return None# num不存在, 返回None
rs = ef(list(range(1, 10)), 8)
print(rs)
相关文章推荐
- 数据结构基础算法整理归纳:插入排序(三)
- 数据结构基础算法整理归纳:冒泡排序(二)
- 数据结构基础算法整理归纳:选择排序(四)
- 算法与数据结构基础5:C++栈的简单实现
- .net 数据结构与算法基础:二叉树
- 【复习】软件设计师之数据结构与算法基础
- Mysql数据库索引原理--数据结构及算法基础
- 基础算法(二)---数据结构之图
- 【数据结构与算法基础】AVL树 / AVL Tree
- #数据结构与算法学习笔记#PTA1:二分查找算法(C/C++)
- php学习第一章:PHP基础语法(三)数据结构与算法:2、单向链表
- 数据结构及算法 3-先打下一点数据结构的基础
- 【算法学习笔记】09.数据结构基础 二叉树初步练习2
- 基础数据结构与算法之非比较排序一:计数排序
- 算法竞赛入门经典:第六章 数据结构基础 6.14欧拉回路
- 数据结构算法面试题精选及整理-随机数rand7生成rand10函数
- 笔试、面试重点总结:算法基础、数据结构
- 基础数据结构和算法
- 算法与数据结构基础(二)排序基础2.插入排序
- 基础数据结构与算法