二分查找(源码)
2017-05-08 21:03
369 查看
/* 二分查找 Q:判断X是否在一个大小为n的有序数组S中 . I:正整数n; 键X; 有序(非递减顺序)键数组S, 索引范围为1到n. O:location, x在S中的位置(若X不在S中,则为0). */ #include<stdio.h> #include<stdlib.h> void CreatArray(int *Array, int Size); int BinarySearch(int *Array, int n, int x, int n1); int main() { //变量声明 int n, i; int *a; //创建数组 printf("input n: "); scanf("%d", &n); //数组大小 a = (int *)malloc(sizeof(int) * n); CreatArray(a, n); //查找键X; int x; int location; printf("input x: "); scanf("%d", &x); location = BinarySearch(a, n, x, n); printf("location: %d", location); // for(i=0; i<n; i++) // { // printf("%d\t", a[i]); // } } /* 创建一维动态数组 */ void CreatArray(int *Array, int Size) { int i; for(i=0; i<Size; i++) { printf("a[%d]:" , i); scanf("%d", &Array[i]); } } /* 二分查找 */ int BinarySearch(int *Array, int n, int x,int n1) { if(Array[n/2] > x) { return BinarySearch(Array, n/2, x, n1); } else if(Array[n/2] <x) { return BinarySearch(Array, n/2 + n1, x, n1); } else { return n/2; } }
相关文章推荐
- 二分查找的递归算法(附源码)_
- [underscore源码学习]——`>>` 运算符和二分查找
- java的Collections中二分查找源码分析
- JAVA源码走读(二)二分查找与Arrays类
- 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现[谁有源码麻烦贴过来个链接学习学习]
- .NET源码中的二分查找实现
- C源码@数据结构与算法->二分查找树(Binary Search Tree)
- 常见几个排序源码及二分查找源码
- 二分查找的递归算法(附源码)_AX
- 数组封装应用及有序数组、二分查找源码实现
- JAVA二分查找源码阅读
- 二分查找bsearch.c源码分析
- SGISTL源码探究-stl_alog.h中的二分查找算法
- 二分查找算法【鸡蛋】
- python 排序算法之 二分查找
- java选择排序和二分查找
- Acm-群赛 Mengzhu 二分查找
- 6字节数据 做 二分查找并插入排序
- 插入,冒泡,选择,快速排序,二分查找
- 二分查找小总结