[置顶] 【C语言】 折半查找
2016-05-26 12:24
330 查看
#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语言】 杀人凶手问题
- [置顶] 【C语言】 跳水比赛名次预测问题
- [置顶] 【C语言】杨辉三角
- [置顶] 【C语言】 猜数字游戏
- [置顶] 【C语言】 n个不同的数可组成多少个不同的三位数
- [置顶] 【C语言】求最大最小值
- [置顶] 【C语言】一分钟后关机
- [置顶] 【C语言】判断花括号{}是否匹配
- [置顶] 【C语言】求 a+aa+aaa+aaaa+aaaaa
- [置顶] 【C语言】模拟三次密码输入
- [置顶] 【C语言】输出字符串
- [置顶] 【C语言】输出一个整数的每一位
- [置顶] 【C语言】输出菱形星号图案
- [置顶] 【C语言】接收字符,大小写字符相互转换后输出,数字不输出
- [置顶] 【C语言】求两个数的最大公约数
- [置顶] 【C语言】三个数从大到小输出
- [置顶] 【C语言】获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- [置顶] 【C语言】 gets()和scanf()函数的区别
- [置顶] 【C语言】交换两个数组内容(数组等大)
- [置顶] 【C语言】求1+2!+3!+...+20!的和