查找方法

奋斗

#include<iostream>
using namespace std;
int main()
{
	int SX_Find(int array[],int n,int k); //折顺序查找
	int BinSearch1(int array[],int n,int k);//非递归算法
	int BinSearch2(int array[], int low, int high, int k);//递归算法
	int *array,n,k,i1,i2,i3,i;
	cout<<"数组的长度为:";
	cin>>n;
	cout<<"要查找的数为:";
	cin>>k;
	array=new int [n];
	cout<<"输入数组中的数值:";
	for(i=0;i<n;i++)
		cin>>array[i];
	i1=SX_Find(array,n,k);
	i2=BinSearch1(array,n,k);
	i3=BinSearch2(array,0,n-1,k);
	if(i==0)cout<<"该数不存在!"<<endl;
	else
		cout<<"该数在数组中的下标为:"<<i1<<" "<<i2<<" "<<i3<<endl;
	return 0;
}
int SX_Find(int array[],int n,int k) 
{   
	 int i;
     array[0]=k; 
	 i=n;
     while(array[i]!=k)
        i--;
     return i;
}
int BinSearch1(int array[],int n,int k)//非递归算法
{ 
   int low=0,high=n-1,mid;
    while (low<=high)                   
    {
       mid=(low+high)/2;            
       if (k<array[mid])  high=mid-1;
       else if (k>array[mid])  low=mid+1; 
              else return mid;
    }
    return 0;
}
int BinSearch2(int array[], int low, int high, int k)//递归算法
{    
	int mid;
    if (low>high) return 0;  
    else {
       mid=(low+high)/2;
       if (k<array[mid]) 
           return BinSearch2(array, low, mid-1, k);
       else  if (k>array[mid]) 
                   return BinSearch2(array, mid+1, high, k); 
               else return mid;
     }
 }


奋斗

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值