#查找算法#【1】简单查找:顺序、折半查找
2014-07-22 21:29
441 查看
•顺序查找
从线性表的一端开始,依次将每个记录的关键字与给定值进行比较,若某个记录的关键字等于给定值,表示查找成功,返回记录序号;若将线性表中所有记录都比较完,仍未找到关键字与给定值相等的记录,则表示查找失败,返回一个失败值。
•折半查找
又称为二分查找。这种查找方法要求查找表的数据是线性结构保存,并且还要求查找表中的数据是按关键字由小到大有序排列。
顺序查找比较简单,依次用数组中的每个元素和要查找的元素进行对比即可。不再贴代码说明
折半查找是一种递归过程,每折半一次,可使查找范围缩小一半,当查找范围缩小到只剩一个元素,而该元素还不是要找的元素,则查找失败。
折半查找说明如下图:
折半查找代码如下:
从线性表的一端开始,依次将每个记录的关键字与给定值进行比较,若某个记录的关键字等于给定值,表示查找成功,返回记录序号;若将线性表中所有记录都比较完,仍未找到关键字与给定值相等的记录,则表示查找失败,返回一个失败值。
•折半查找
又称为二分查找。这种查找方法要求查找表的数据是线性结构保存,并且还要求查找表中的数据是按关键字由小到大有序排列。
顺序查找比较简单,依次用数组中的每个元素和要查找的元素进行对比即可。不再贴代码说明
折半查找是一种递归过程,每折半一次,可使查找范围缩小一半,当查找范围缩小到只剩一个元素,而该元素还不是要找的元素,则查找失败。
折半查找说明如下图:
折半查找代码如下:
#include <stdio.h> #define LENGTH 10 int source[LENGTH] = {10,12,28,37,54,65,69,86,90,98}; //二分查找,查找key在原始数据a中的位置 int BinarySearch(int a[],int n,int key){ int low,high,mid; low = 0; high = n-1; while(low<=high){ mid = (low + high)/2; //每次让中间数取最小和最大的中间 if(a[mid] == key) //查找的元素正好等于中间值 return mid; else if(key < a[mid]) //查找的元素小于中间值,在最小值和上次中间值范围内查找 high = mid - 1; else low = mid + 1; //查找的元素大于中间值,在中间值和最大值范围查找 } return -1; } int main(){ int i,key,pos; printf("原始数据:\n"); for(i = 0 ; i < LENGTH ; i++) printf("%d ",source[i]); printf("\n请输入要查找的数据:"); scanf("%d",&key); pos = BinarySearch(source,LENGTH,key); if(pos > -1) printf("\n查找成功,查找元素位于第 %d 个",pos); else printf("\n查找失败"); }
相关文章推荐
- 顺序查找、折半查找、引索顺序表查找的实现
- 顺序查找 折半查找 二叉排序树
- 顺序查找、折半查找及索引顺序查找
- 算法复习--------------基本算法:顺序查找,选择排序,冒泡排序算法等简单算法
- PHP 顺序查找和二分查找(也叫做折半查找)算法
- 顺序查找和折半查找
- 【查找算法】——顺序查找、折半查找、分块查找(索引查找)
- 静态查找表:顺序查找、折半查找、分块查找
- 静态查找(顺序查找,折半查找,插值查找,斐波那契查找)
- 简单查找算法之折半查找、插值查找、斐波那契查找
- 查找(一)静态查找的顺序查找和 有序折半查找
- 顺序查找和折半查找
- 两种简单查找算法之顺序查找和二分查找
- 静态查找表:顺序查找、折半查找、分块查找
- 简单描述一下二分查找和顺序查找
- 查找——简单顺序查找
- 最简单的顺序查找
- 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
- (3) 查找算法 --- 顺序查找 折半查找
- Java实现三种常用的查找算法(顺序查查找,折半查找,二叉排序树查找)