程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話二分查找算法及完成代碼

C說話二分查找算法及完成代碼

編輯:關於C++

C說話二分查找算法及完成代碼。本站提示廣大學習愛好者:(C說話二分查找算法及完成代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話二分查找算法及完成代碼正文


二分査找也稱折半査找,其長處是查找速度快,缺陷是請求所要査找的數據必需是有序序列。該算法的根本思惟是將所要査找的序列的中央地位的數據與所要査找的元素停止比擬,假如相等,則表現査找勝利,不然將以該地位為基准將所要査找的序列分為閣下兩部門。接上去依據所要査找序列的起落序紀律及中央元素與所查找元素的年夜小關系,來選擇所要査找元素能夠存在的那部門序列,對其采取異樣的辦法停止査找,直至可以或許肯定所要查找的元素能否存在,詳細的應用辦法可經由過程上面的代碼詳細懂得。

#include <stdio.h>
binarySearch(int a[], int n, int key){
 int low = 0;
 int high = n - 1;
 while(low<= high){
  int mid = (low + high)/2;
  int midVal = a[mid];
  if(midVal<key)
   low = mid + 1;
  else if(midVal>key)
   high = mid - 1;
  else
   return mid;
 }
 return -1;
}
int main(){
 int i, val, ret;
 int a[8]={-32, 12, 16, 24, 36, 45, 59, 98};
 for(i=0; i<8; i++)
  printf("%d\t", a[i]);
 printf("\n請輸人所要查找的元素:");
 scanf("%d",&val);
 ret = binarySearch(a,8,val);
 if(-1 == ret)
  printf("查找掉敗 \n");
 else
  printf ("查找勝利 \n");
 return 0;
}

運轉成果:

-32    12    16    24    36    45    59    98

請輸出所要查找的元素:12

查找勝利

在下面的代碼中,我們勝利地經由過程二分査找算法完成了查找功效,其完成進程以下圖所示。

 在如上圖所示的查找進程中,先將序列中央地位的元素與所要査找的元素停止比擬,發明要査找的元素位干該地位的左部門序列中。接上去將mid的右邊一個元素作為 high,持續停止二分査找,這時候mid所對應的中央元素恰好是所要査找的元素,査找停止,前往査找元素所對應的下標。在main函數中經由過程前往值來斷定査找能否勝利,假如査找勝利.就打印輸入“査找勝利”的信息,不然輸入“査找掉畋”的信息。

 以上就是對二分查找法的具體引見,願望進修 C說話的同窗可以控制。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved