c语言简单递归/非递归实现二分查找
2016-12-08 19:49
716 查看
#include <stdio.h> #include <stdlib.h> int binSearch1(int* a, int left, int right, int data) { int mid =0; while (left<=right) { mid = (left + right) / 2; if (data == a[mid]) { return mid; } else if (data > a[mid]) { left = mid + 1; } else { right = mid - 1; } } return -1; } //递归实现 int binSearch2(int* a, int left, int right, int data) { int mid = (left + right) / 2; int index = 0; if (data == a[mid])//递归终止1 { return mid; } if (left > right)//递归终止2 { return -1; } if (data > a[mid]) { index=binSearch2(a, mid+1 , right, data); } else { index=binSearch2(a, left, mid-1, data); } return index; } int main() { int a[] = { 1, 3, 5, 7, 12, 15, 17, 19 }; int len = sizeof(a) / sizeof(int); int data = 19; int index = binSearch2(a, 0, len-1, data); printf("data=%d,index=%d\n", data,index); getchar(); }
相关文章推荐
- C语言数据结构中二分查找递归非递归实现并分析
- 二分查找的递归和非递归算法(C语言实现)
- C语言:递归和非递归实现二分查找
- C语言实现 二分查找数组中的Key值(递归和非递归)
- 使用c语言指针和递归方法实现二分查找
- c语言利用递归实现二分查找
- C语言 ---- 递归实现二分查找
- C语言编程中实现二分查找的简单入门实例
- 二分查找的递归和非递归实现
- 二分查找算法递归实现
- 二分查找的递归与非递归实现
- HDU 2141 二分查找,实现上简单,思想很重要
- 漫谈递归:二分查找算法的递归实现
- 《算法导论》第二章----插入排序(伪代码实现、课后习题(递归版本、二分查找策略版本))
- 二分查找的递归和非递归实现
- 二分查找的递归与非递归实现
- 简单C语言递归实现进制转换并输出
- 二分查找递归实现
- Java实现折半查找(二分查找)的递归和非递归算法
- Java实现折半查找(二分查找)的递归和非递归算法