C语言---二分法搜索
生活随笔
收集整理的這篇文章主要介紹了
C语言---二分法搜索
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//一維數組二分法
#include <stdio.h>
int search(int number,int dict[],int length); //二分法搜索函數聲明,返回下標
int main(){int num;//數組大小 int i,j;//循環變量 printf("請輸入數組大小:");scanf("%d",&num);int dict[num];int num_1;int item; //排序時作為中間變量 printf("請輸入數組元素:");for(i=0;i<num;i++){scanf("%d",&dict[i]);}//進行二分法搜索之前,先把數組從小到大排序/*在n個數中找最小的,與dict[0]交換在n-1個數中找最小的,與dict[1]交換在n-2個數中找最小的,與dict[2]交換*/ for(i=0;i<num;i++){num_1=i;for(j=i+1;j<num;j++){if(dict[j]<dict[num_1]){num_1=j;}}item=dict[num_1]; //交換順序 dict[num_1]=dict[i];dict[i]=item;}//輸出排序后的數組printf("排序后的數組:");for(i=0;i<num;i++){printf("%3d",dict[i]);}printf("\n"); printf("PS:下標為排序后的下標\n");//二分法排序int num_num;//接受下標 int number; //搜索目標數字 printf("請輸入要查找的數:");scanf("%d",&number);num_num=search(number,dict,sizeof(dict)/sizeof(dict[0]));if(num_num!=-1){printf("目標數:%d 下標為:%d",number,num_num);}else{printf("NOT FOUND");}return 0;
} int search(int number,int dict[],int length){int i;int ret=-1;int left=0;int right=length-1;int mid=(left+right)/2;while(right>=left){if(dict[mid]<number){left=mid+1;mid=(left+right)/2;}else if(dict[mid]>number){right=mid-1;mid=(left+right)/2;}else{ret=mid;break;}}return ret;
}
總結
以上是生活随笔為你收集整理的C语言---二分法搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 数据类型(就做个笔记总结)
- 下一篇: 个性签名女生阳光气质