C语言设置监视哨的顺序查找、折半查找算法的实现
来源:互联网 发布:9a91翡翠数据 编辑:程序博客网 时间:2024/05/28 16:25
设置监视哨算法的实现也算是相当简单,和顺序查找的思路一样,但把查找数组a[]的第一个元素a[0]赋值为所要查找元素的值。下面是实现代码:
int Search_Seq(int a[], int length, int key){int i;a[0] = key;for (i = length; a[i] != key; i--);return i;}
将要查找的值key赋值给a[0],然后从a[]数组下标最高位依次向最低比较(也就是说比较元素从数组最后一位,即length,移向最开始一位,即0,比较),一旦有a[i]与查找值key相等,则返回i值。由于a[0]已经是key值,所以数组中必然有一个值等于key(原数组没有的话会比较到a[0],a[0]与key值相等,故返回0),当返回值为0的时候,表明没有找到该值。
加入main():
int main(void){int length, i, key,n;int *a;printf("输入长度:");scanf("%d", &length);a = (int *)malloc(sizeof(int)*(length + 1));printf("输入各个元素的值:");for (i = 1; i <= length; i++){scanf("%d", &a[i]);}printf("输入查找的元素:");scanf("%d", &key);n=Search_Seq(a, length, key);printf("该元素的位置为:%d\n",n);return 0;}
折半查找法:
折半查找法要求该数组为有序的,在实际操作中可以在输入之后多增加一步排序操作,此处实例就不加入此步骤,直接输入有序数组:
int Search_Bin(int a[], int key, int length){int mid, high, low;low = 1;high = length;while (low <= high){mid = (low + high) / 2;if (a[mid] == key)return mid;elseif (a[mid] < key)low = mid + 1;elseif (a[mid]>key)high = mid - 1;}return 0;}
初始化low为1,high为数组长度。当low小于或等于high时,将low和high之和除以二之后赋值给mid,让mid指向查找范围内的中间的一个值。然后判断mid下标的值与key值之间的大小,若相等,返回mid;若mid下标的值大于key值,则将mid-1的值赋值给high,因为原来的mid到high部分包括mid已经确定大于要查找的值;同理,当mid下标的值小于key值的时候,将mid+1的值赋值给low。
加入main()测试:
int main(void){int i, key, len, n;int *p;printf("输入长度:");scanf("%d", &len);printf("输入各个元素的值:");p = (int *)malloc(sizeof(int)*(len + 1));for (i = 1; i <= len; i++)scanf("%d", &p[i]);printf("输入要查找的值:");scanf("%d", &key);n = Search_Bin(p, key, len);if (n == 0)printf("没有找到该值\n");elseprintf("该值的位置为:%d\n", n);return 0;}
0 0
- C语言设置监视哨的顺序查找、折半查找算法的实现
- C语言实现折半查找(二分查找)的算法
- 查找算法的实现 顺序和折半
- 折半查找的c语言实现
- (查找)用C语言实现的折半查找
- C语言实现 折半查找算法
- 折半查找算法的实现
- 折半查找算法的实现
- 各类C语言查找算法汇总--折半、顺序
- 十.用C语言实现查找算法 (1)顺序查找;(2)二分查找(折半查找);(3)二叉排序树;(4)哈希查找
- C语言 数据结构查找 顺序查找及折半查找
- (查找)用C语言实现的顺序查找
- 纯C语言写的折半查找
- C语言:折半查找的程序编写
- 折半查找的实现
- 折半查找的实现
- 折半查找的实现
- 带监视哨和没有带监视哨的顺序查找算法
- HTTP Request的Header信息
- java默认加的包
- React-native Image的初识
- 什么是高内聚、低耦合?
- android glide加载原图显示
- C语言设置监视哨的顺序查找、折半查找算法的实现
- 机器人相关的标准汇总
- Django Rest Framework - 实例PartyDemo 之 Token验证
- 解决class com.intellij.psi.impl.source.tree.PsiErrorElementImpl 异常的方法
- updateByPrimaryKey和updateByPrimaryKeySelective insert和insertSelective
- 这个发现是否会是RSA算法的BUG、或者可能存在的破解方式?
- 欢迎加入,新群号码:99640845
- Eclipse快捷键大全
- IP