二分查找 绝地灬酷狼 2022-05-12 01:40 19阅读 0赞 //二分查找 /\* 递归算法 int searchB1(int A\[\], int low, int high, int data); 非递归算法 int searchB2(int A\[\], int len, int data); \*/ \#include<stdio.h> \#include<string.h> \#define Len 25 //递归算法 int searchB1(int A\[\], int low, int high, int data); //非递归算法 int searchB2(int A\[\], int len, int data); void main() \{ int i; int len = 0; int data; //要查找的字符 int result = 0; int A\[\] = \{1,2,3,4,5,6,7,8,9\}; len = sizeof(A) / sizeof(int); printf("output the primary data:"); for(i = 0; i < len; i++) \{ if( i % 5 == 0) printf("\\n"); printf("A\[%d\]:%d\\t",i,A\[i\]); \} printf("\\nintput the searched char:"); scanf("%d",&data); result = searchB1(A,0,len-1,data); printf("recursion search.\\n"); if( result == -1 ) \{ printf("Sorry,no this char.\\n"); \} else \{ printf("the char is %d.\\n",A\[result\]); printf("the index of the char in Array is %d.\\n",result); \} result = searchB2(A,len,data); printf("unrecursion search.\\n"); if( result == -1 ) \{ printf("Sorry,no this char.\\n"); \} else \{ printf("the char is %d.\\n",A\[result\]); printf("the index of the char in Array is %d.\\n",result); \} \} //非递归算法 int searchB2(int A\[\], int len, int data) \{ int low = 0; int high = len - 1; int mid = 0; while( low <= high ) \{ mid = ( low + high ) / 2; if( A\[mid\] == data ) \{ return mid; \} else if( A\[mid\] < data ) \{ low = mid + 1; \} else \{ high = mid - 1; \} \} //没有返回-1 return -1; \} int searchB1(int A\[\], int low, int high, int data) \{ if( low <= high ) \{ int mid = ( low + high ) / 2; //low+((high-low)/2)可能更严谨 if( A\[mid\] == data ) \{ return mid; \} else if( A\[mid\] < data ) \{ low = mid + 1; return searchB1(A,low,high,data); \} else \{ high = mid - 1; return searchB1(A,low,high,data); \} \} else \{ //没有返回-1 return -1; \} \} ![1355021331_5463.jpg][] /\*博主寄语:如若发现错误,望指出,谢谢\*/ [1355021331_5463.jpg]: https://img-my.csdn.net/uploads/201212/09/1355021331_5463.jpg
相关 二分查找 函数lower\_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置 举例 约定不等于承诺〃/ 2022年08月07日 14:47/ 0 赞/ 24 阅读
相关 二分查找 二分查找可以说是在经典不过的查找算法了,比如JAVA的库函数里,就有相应的代码实例。如下写出两个版本的二分查找,非递归和递归的 非递归的 public int bi 系统管理员/ 2022年08月06日 16:24/ 0 赞/ 35 阅读
相关 二分查找 //二分查找 /\ 递归算法 int searchB1(int A\[\], int low, int high, int data); 非递归算法 int 绝地灬酷狼/ 2022年05月12日 01:40/ 0 赞/ 20 阅读
相关 查找——二分查找 基本思想 二分查找是建立在有序顺序表基础上的!步骤如下: 1. 将表中间位置记录的关键字与给定K值进行比较,若两者相等,则查找成功。 2. 蔚落/ 2022年03月27日 03:46/ 0 赞/ 358 阅读
相关 二分查找 二分查找(先排序) typedef struct LNode List; struct LNode{ ElemenType Data[MAXSIZ 爱被打了一巴掌/ 2022年02月02日 17:13/ 0 赞/ 104 阅读
相关 二分查找 使用递归的版本 def bin_search(lst, num, start=None, end=None): """ 二分查找 àì夳堔傛蜴生んèń/ 2022年01月07日 04:03/ 0 赞/ 79 阅读
相关 二分查找 int search2( int array\[\], int n, int v) \{ int left, right, middle; 心已赠人/ 2021年12月20日 16:07/ 0 赞/ 94 阅读
相关 二分查找 二分查找 二分查找是一个比较简单的算法,用 C++ 语言实现如下: template <typename T> int binary_search( ゞ 浴缸里的玫瑰/ 2021年12月13日 03:57/ 0 赞/ 162 阅读
相关 二分查找 > 一、自己实现的 include<iostream> include<cstdio> include<algorithm> u 左手的ㄟ右手/ 2021年09月21日 17:12/ 0 赞/ 270 阅读
还没有评论,来说两句吧...