<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
折半查詢也稱二分查詢,是一種在有序陣列中查詢某一特定元素的搜尋演演算法,每一次查詢,搜尋範圍均縮小一半,效率較高。如果陣列是亂序狀態,則應排序,再進行查詢。
搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演演算法每一次比較都使搜尋範圍縮小一半 。
總共有n個元素,每次查詢的區間大小就是n,n/2,n/4,…,n/ 2 k 2^k 2k,一直到1,其中k就是迴圈的次數。
由於n/ 2 k 2 ^ k 2k取整後>=1,即令n/ 2 k 2^k 2k=1,可得k=log2n,(是以2為底,n的對數),所以時間複雜度可以表示O()=O(logn)。
二分查詢只需要額外儲存三個變數:最大值 ,最小值 和 中點,空間複雜度為常數 O(1)。
優點:比較次數少,查詢速度快,平均效能好。
缺點:要求待查表為有序表,且插入刪除困難。
#include <stdio.h> #include <string.h> int binarySearch(int array[],int len,int target){ int left = 0; int right = len - 1; while(left <= right){ int mid = (right + left) / 2; if(array[mid] == target){ return mid; } else if(array[mid] < target){ left = mid + 1; } else if(array[mid] > target){ right = mid - 1; } } return -1; } int main(void) { int array[]={2,3,4,5,15,19,26,27,36,38,45}; int key = 0,ret; printf("請輸入需要查詢的數位:"); scanf("%d",&key); ret = binarySearch(array,sizeof(array)/sizeof(int),key); if(ret < 0) printf("查詢失敗n"); else printf("該數位為陣列第%d個元素n",ret+1); return 0; }
執行結果:
請輸入需要查詢的數位:38
該數位為陣列第10個元素
到此這篇關於C語言折半查詢法介紹及使用範例的文章就介紹到這了,更多相關C語言折半查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45