關於C語言二分法


二分法

適應情況:在一批有序數據中查找某數,在實際的應用中還會運用到冒泡法的排序方法

基本思想:選定這批數中居中間位置的一個數與所查數比較,看是否為所找之數,若不是,利用數據的有序性,可以決定所找的數是在選定數之前還是在之后,從而很快可以將查找范圍縮小一半。以同樣的方法在選定的區域中進行查找,每次都會將查找范圍縮小一半,從而較快地找到目的數。

 

例題:假設在數組a中的數據是按由小到大順序排序的:-12 0 6 16 23 56 80 100 110 115,從鍵盤上輸入一個數,判定該數是否在數組中,若在,輸出所在序號。

#define M 10
#include <stdio.h>
int main(){
  int a[M]={-12,0,6,16,23,56,80,100,110,115};
  int low,mid,high,b,found;
  low=0;
  high=M-1;
  scanf("%d",&b);
  while(low <= high){
    mid=(low+high)/2;
    if(b == a[mid]){
      found =1;
      break;
    }else if(b>a[mid]){
      low=mid+1;
    }else{
      high=mid-1;
    }
  }
  if(found ==1){
    printf("The index of %d is %d",b,mid);
  }else{
    printf("There is not %d",b);
  }
  return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM