91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

清丰县| 新余市| 常宁市| 平远县| 外汇| 喜德县| 民乐县| 德令哈市| 竹北市| 自贡市| 广丰县| 连山| 濮阳县| 迭部县| 嘉鱼县| 汽车| 密山市| 平武县| 绥滨县| 洞口县| 格尔木市| 张家港市| 阳朔县| 若羌县| 贡山| 和田县| 商南县| 个旧市| 花莲县| 阜康市| 华蓥市| 湘潭市| 阿城市| 喀喇沁旗| 巴楚县| 合江县| 周宁县| 星子县| 吴堡县| 铁岭县| 江华|