二分查詢法的基本思想與實現程式碼
阿新 • • 發佈:2019-02-04
二分查詢法思想:
二分查詢法又稱夾逼法,二分查詢法使用的基本條件是一個有序的陣列,通過從陣列頭部和尾部折半,判斷要查詢的數和mid位置數值的大小,來判斷要查詢的數實在那一半,之後繼續折半查詢,直至找到這個數或者最後小端大於大段則結束查詢
二分查詢法程式碼:
#include <stdio.h> #include<stdlib.h> #include<time.h> #define MAXLEN 100 //建立陣列 void createArr(int arr[],int len) { int i=0; srand((unsigned int)time(NULL)); for(i=0;i<len;i++) { arr[i]=rand()%MAXLEN; } return ; } //列印陣列 void printArr(int arr[], int len) { int i=0; for(i=0;i<len;i++) { printf("%d=%d\n",i+1,arr[i]); } return ; } //選擇排序程式碼 void select_sort(int arr[],int len) { int i=0,j=0; for(i=0;i<len;i++)//控制每次從陣列哪個位置開始執行迴圈,第一次從第一個元素開始,之後每次向後移動一個元素 { for(j=i+1;j<len;j++)//負責未排序部分第一個元素與後面元素之間的比較,不滿足排序規則時交換兩個元素 { if(arr[j]<arr[i]) { int tem=arr[i]; arr[i]=arr[j]; arr[j]=tem; } } } return ; } void binary_chop(int arr[],int len,int num) { int min=0; int max=len-1; while(min<=max) { int mid=(max-min)/2+min; if(arr[mid]<num) min=mid+1; else if(arr[mid]>num) max=mid-1; else { cout<<"找到"<<num<<endl; return ; } } cout<<"陣列中沒有"<<num<<endl; return ; } int main(void) { int number; printf("Hello World!\n"); int arr[MAXLEN]={0}; createArr(arr,MAXLEN); select_sort(arr,MAXLEN); printArr(arr,MAXLEN); cout<<"請輸入要查詢的數:"<<endl; cin>>number; binary_chop(arr,MAXLEN,number); return 0; }