【C语言】 折半查找
2015-10-21 22:54
211 查看
#include<stdio.h> #define M 10 int my_binsearch(int x, int v[], int n) // 带查找元素x,已排序数组v,数组元素个数 { int left, right, mid; left = 0, right = n - 1; while (left <= right) { mid = (left + right) / 2; if (x < v[mid]) { right = mid - 1; } else if (x > v[mid]) { left = mid + 1; } else { return mid; } } return -1; } int main() { int v[M]; int i,x,ret; char c; printf("请输入一组有序的数:"); for (i = 0; i < M; i++) { scanf_s("%d", &v[i]); } flag: printf("请输入要查找的数:"); scanf_s("%d", &x); ret = my_binsearch(x, v, M); //ret接收函数返回值 if (ret != -1) //根据返回值做判断 { printf("找到了!数%d在数组的第%d位\n", x, ret + 1); } else // 没有找到继续找 { printf("没有找到!"); printf("\n是否继续查找?(Y/N)"); scanf_s("%c", &c); getchar(c); printf("\n"); while (c = 'Y') //可直接进行goto语句,我这样写为了重新查找时更清晰 { goto flag; } } system("pause"); return 0; }
本文出自 “Vs吕小布” 博客,请务必保留此出处http://survive.blog.51cto.com/10728490/1705041
相关文章推荐
- C++虚函数的实现机制
- [OOD-More C++ Idioms] 内部类 (Inner Class)
- 项目39.2求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。
- c语言/c++常见面试题
- C++中指针和引用的区别(转)
- C语言,内存管理
- 1004. 成绩排名 (20)
- C语言基础—字符串输入输出函数puts和gets
- 用C语言写一个函数返回参数二进制中1的个数
- 自测-3 数组元素循环右移问题
- 构造函数
- 自测-2 素数对猜想
- 自测-1 打印沙漏
- 5-28 猴子选大王
- 黑马程序员-C语言的输入函数
- 5-36 复数四则运算
- 《我与c++的第二次相遇》 --1 【重新学习c++】
- vc++ 操作excel
- 用筛法求之N内的素数。
- c++中介者模式