[Java] java算法:折半查找(递归算法和非递归算法) →→→→→进入此内容的聊天室

来自 , 2019-08-06, 写在 Java, 查看 108 次.
URL http://www.code666.cn/view/f6e06644
  1. package Ceshi;
  2.  
  3. public class biSearch {
  4.  
  5.         /**
  6.          * @param args
  7.          */
  8.         /*
  9.         折半查找--当查找表是有序表时,可采用折半查找;
  10.         基本思想:在有序表中,取中间元素作为比较对象,若给定值K与中间记录关键字相等,则查找成功;
  11.         若给定值K小于中间记录的关键字,则在表的左半区继续查找;
  12.         若给定值K大于中间记录的关键字,则在表的右半区继续查找,不断重复,直到查找成功/失败。
  13.         */
  14.  
  15.         //折半查找非递归算法
  16.         //查询成功返回该对象的下标序号,失败时返回-1。
  17.         int BiSearch(int r[],int n,int k)
  18.         {
  19.                 int low=0;
  20.                 int high=n-1;
  21.                 while(low<=high)
  22.                 {
  23.                         int mid=(low+high)/2;
  24.                         if(r[mid]==k)
  25.                                 return mid;
  26.                         else
  27.                                 if(r[mid]<k)
  28.                                         low=mid+1;
  29.                                 else
  30.                                         high=mid-1;
  31.                 }
  32.                 return -1;
  33.         }
  34.  
  35.  
  36.         //折半查找递归算法
  37.         //查询成功返回该对象的下标序号,失败时返回-1。
  38.         int BiSearch2(int r[],int low,int high,int k)
  39.         {
  40.                 if(low>high)
  41.                         return -1;
  42.                 else
  43.                 {
  44.                         int mid=(low+high)/2;
  45.                         if(r[mid]==k)
  46.                                 return mid;
  47.                         else
  48.                                 if(r[mid]<k)
  49.                                         return BiSearch2(r,mid+1,high,k);
  50.                                 else
  51.                                         return BiSearch2(r,low,mid-1,k);
  52.  
  53.                 }
  54.         }
  55.        
  56.         public static void main(String[] args) {
  57.                 biSearch bs=new biSearch();
  58.                 int r[]={1,2,3,4,5};
  59.                 System.out.println(bs.BiSearch(r,5,5));
  60.                 System.out.println(bs.BiSearch2(r,1,5,5));
  61.         }
  62.  
  63. }
  64.  
  65. //java/5829

回复 " java算法:折半查找(递归算法和非递归算法)"

这儿你可以回复上面这条便签

captcha