有序数组的查找(个人感觉美到极致的一个算法)
来源:互联网 发布:大乐透算法必中5红 编辑:程序博客网 时间:2024/06/03 22:55
对于包含n个元素的数组,整个查找过程大约要经过logn次比较。(二分查找算法)
代码如下:
非递归版本
int BinarySearch(int array[],int n,int value){ int left = 0; int right = n-1; //如果上面这句是int right = n的话,则下面有两处需要改动 //while(left < right) //array[middle]>value的时候 right = mid(基本没有这样写的) while (left <= right) { int mid = left + ((right-left)>>1);//位运算更快 if (array[mid] > value) { right = mid-1; } else if (array[mid] < value) { left = mid+1; } else return mid;//返回的是位置 } return -1;}
递归版本
int BinarySearch(int array[],int left,int right,int value){ if (left > right) { return -1; } int mid = left + ((right-left)>>1); if (array[mid] > value) { return BinarySearch(array,left,mid-1,value); } else if (array[mid] < value) { return BinarySearch(array,mid+1,right,value); } else return mid;}
0 0
- 有序数组的查找(个人感觉美到极致的一个算法)
- 对于有序数组的二分查找算法
- 有序数组的查找
- 有序数组的查找
- 算法9:在一个循环有序的数组里查找一个数
- 一个有序数组的混乱算法
- 一个合并有序数组的算法题
- 有序数组的随机化查找
- 有序数组的折半查找
- 有序数组的二分查找
- 循环有序数组的查找
- 有序二维数组的查找
- 有序数组的二分查找
- 有序数组的二分查找
- 有序二维数组的查找
- 在一个循环有序的数组里查找特定值
- 在一个两段有序的数组中查找
- 在有序递增数组中查找一个缺少的数字
- 序列化yu 反序列化
- 安卓5.0之后的新控件TabLayout
- SQLALCHEMY 中查询一直返回空的问题
- Linux安装Tomcat9
- OLED屏幕和Rpi
- 有序数组的查找(个人感觉美到极致的一个算法)
- android js互相调用的方法,混淆后js无效,addJavascriptInterface使用注意事项
- TCP为什么要三次握手而结束要四次
- 51NOD 1108 距离之和最小 V2(中位数 + 化整为分)
- POJ.3254 Corn Fields
- 辗转相除法
- Android中按钮的点击事件的四种写法
- 在使用VC++6.0常见问题“Error spawning cl.exe”的解决方法
- C++ STL库的总结以及实现原理