亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言之折半查找(二分查找)

發布時間:2020-07-21 17:05:24 來源:網絡 閱讀:821 作者:1243983186 欄目:編程語言

一、什么是折半查找?

二分查找又稱折半查找,優點是比較次數少,查找速度快,平均性能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查找方法適用于不經常變動而查找頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的關鍵字大于查找關鍵字,則進一步查找前一子表,否則進一步查找后一子表。重復以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。
算法復雜度編輯
二分查找的基本思想是將n個元素分成大致相等的兩部分,取a[n/2]與x做比較,如果x=a[n/2],則找到x,算法中止;如果x<a[n/2],則只要在數組a的左半部分繼續搜索x,如果x>a[n/2],則只要在數組a的右半部搜索x.
時間復雜度無非就是while循環的次數!
總共有n個元素,
漸漸跟下去就是n,n/2,n/4,....n/2^k(接下來操作元素的剩余個數),其中k就是循環的次數
由于你n/2^k取整后>=1
即令n/2^k=1
可得k=log2n,(是以2為底,n的對數)
所以時間復雜度可以表示O()=O(logn)

二、折半查找原理

查找過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜素過程結束;如果某一特定元素大于或者小于中間元素,則在數組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。

C語言之折半查找(二分查找)

三、C語言程序代碼

#include<stdio.h>
int binserch(int x,int m[],int n);
int main()
{
int a,jieguo;
int m[10]={1,2,3,4,5,6,7,8,9,10};
printf("請輸入要找的數:");
scanf("%d",&a);
jieguo=binserch(a,m,10);
if(jieguo==-1)
printf("沒找到!\n");
else
printf("在m[%d]位置找到%d\n",jieguo,a); 
return 0; 

int binserch(int x,int m[],int n)//x是要找的數,n為數據的長 
{
int low,high,mid;
low=0;high=n-1;
while(low<=high)
{
    mid=(low+high)/2;
if(x<m[mid])
high=mid-1;
else if(x>m[mid])
    low=mid+1;
else
return mid;
}
return -1;
}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金昌市| 彰化市| 苗栗市| 桂阳县| 航空| 大埔县| 武穴市| 雷波县| 永丰县| 滨海县| 临夏市| 汝城县| 永济市| 淳安县| 伊宁县| 临漳县| 泗洪县| 彰武县| 泰安市| 漳浦县| 台前县| 徐汇区| 抚州市| 威海市| 常熟市| 曲阳县| 黄龙县| 雅江县| 景德镇市| 日照市| 伊通| 宜良县| 西峡县| 呼和浩特市| 瑞金市| 长春市| 叙永县| 大港区| 浠水县| 日土县| 定兴县|