二分查找,这个适用于已经排序好了的数组,没有排序那就先排序,不过要根据实际的情况,要是排序代价很小,这样很好了
/**
*2.15,在有序数组中查找,利用二分查找的方法
*
*/
#include <iostream>
using namespace std;
/**
*二分查找(也可以通过递归实现)
*
*/
int sort(int *a, int length, int value){
int left = 0, right = length - 1;
while(left <= right){
int center = (left + right)/2;
if(value < a[center]){
right = center - 1;
}else if(value > a[center]){
left = center + 1;
}else{
return center;
}
}
return -1;
}
//递归形式
int sort(int *a, int left, int right, int value){
int center = (left + right)/2;
//异常时的检测
if(left == right && a[center] != value) return -1;
//递归查找
if(value > a[center]) sort(a, center+1, right, value);
else if(value < a[center]) sort(a, left, center-1, value);
else return center;
}
int main(){
int a[10] = {2,4,5,6,8,12,32,45,55,65};
cout<<"列表:"<<endl;
for(int i=0; i<10; i++){
cout<<a[i]<<" ";
}
cout<<endl;
int v;
cin>>v;
cout<<"在位置:"<<sort(a, 10, v)<<endl;
cout<<"递归在位置:"<<sort(a, 0,9, v)<<endl;
}
分享到:
相关推荐
分别用递归和非递归方法实现二分查找算法 的完整程序,indexof()返回的是循环实现的二分法查找,getindex()实现的是递归算法实现的二分法查找。
用C语言开发的递归和非递归二分查找算法,具体内容详见代码
这里本人自己写的是折半查找算法(又称二分查找)的c++代码的实现, 用的是递归的方法和非递归的方法, 里面的代码已经编译通过,并且优化好, 有需要的朋友可以下载借鉴一下
二分查找的递归与非递归实现(java版)
二分搜索的递归和非递归实现。比较简单的实现。
Java实现二分查找的递归和非递归算法
基于java语言的二分查找,递归以及非递归算法,仅供学习娱乐
C 二分查找 递归与非递归的实现代码,需要的朋友可以参考一下
使用Python3实现非递归的二分查找算法,资源中包含具体实现代码与单元测试代码,已进行代码重构,代码风格整洁易读
C语言数据结构中二分查找递归非递归实现并分析 前言: 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑...
C++ 中二分查找递归非递归实现并分析 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑不全边界问题。 ...
这是一个二分查找的C++代码,其中有两个函数,是递归和非递归,array数组没有输入,默认为array[1] = 1, array[2] = 2......array[n] = n,欢迎大家来改编程序~ 参考:...
二叉树的创建,非递归遍历,二分查找树的模板实现
JAVA用递归和非递归的方法实现二分查找
主要介绍了PHP二分查找算法,结合实例形式分析了php基于递归与非递归方法实现二分查找的具体操作技巧,需要的朋友可以参考下
二分查找的递归算法和非递归算法,面试的时候被问到,当着技术主管的面写算法
主要介绍了python二分法查找算法实现方法,结合实例形式分析了Python使用递归与非递归算法实现二分查找的相关操作技巧,需要的朋友可以参考下