二分查找和冒泡排序?

二分查找: 递归(分左右, 传递start,end参数)和非递归(使用while(l < h)),冒泡排序: 两个for循环。


#include<iostream>
int getIndex(int *a,int n,int data)//查找值为data的元素在数组中的下标位置,采用二分查找非递归的形式;
{
 if (a==NULL||n<=0)
 {
  return -1;
 }
 int start=0;
 int end=n-1;
 while (start<end)
 {
  int mid=start+(end-start)/2;
  if (data==a[mid])
  {
           return mid;
  }
  else if (data>a[mid])
  {
   mid=mid+1;
  }
  else
   mid=mid-1;
 }
 return -1; 

}
int getIndexDigui(int *a,int data,int start,int end)//递归
{
     int mid=start+(end-start)/2;
        if (start>end)
        {
            return -1;
        }
      if (data==a[mid])
      {
       return mid;
      }
      else if (data>a[mid])
      {
       return getIndexDigui(a,data,mid+1,end);
      }
      else
       return getIndexDigui(a,data,0,mid-1);
   
}
int getIndexOwn(int *a,int n,int data)
{
     if (a==NULL||n<=0)
     {
      return -1;
     }
     else
      return getIndexDigui(a,data,0,n-1);
}
int main(int argc, char* argv[])
{
     int a[]={2,4,5,7,8,9};
     int length=sizeof(a)/sizeof(int);
     int index=getIndex(a,length,5);
     cout<<"查找的元素下标为:"<<index<<endl;
     int index2=getIndexOwn(a,length,7);
     cout<<"采用递归调用的形式的下标为:"<<index2<<endl;
     return 0;
}