從第乙個(或最後乙個)記錄開始,逐個進行記錄的關鍵字與給定值進行一一比較。
最基礎**:
void
sq_search
(int
*a,int n,
int key)
return0;
}
缺陷:每對乙個記錄需要進行兩次判斷(i<=n,a[i]=key),總共需進行2n次,效率不高
優化:設定哨兵。把key賦值給a[0],來做為迴圈推退出點,一次來減少比較的次數。效率提高一倍。
int
sq_sort
(int
*a,int n,
int key)
列如圖書館中找書的情景,本質上是折半查詢(對所有記錄的關鍵字進行排序,每一次縮小一半資料,來進行查詢,效率達到o(log2n),相對較高)。
折半查詢**:
(設定三個標記:low,high,mid;依次折半比較,當low大於high時跳出迴圈,未成功查詢)
int
half_search
(int
*a;int n,
int key)
return-1
;}
**插值查詢:**按比例劃分的折半查詢(僅有一處不同)。
int
half_search
(int
*a;int n,
int key)
return-1
;}
斐波那契查詢(**分割法查詢):
斐波那契數列f[k]:1,1,2,3,5,8,13,21,34,55,89…
前後兩數字的比值,越往後越接近**比例0.618
資料結構中的各種查詢 總結篇
一 基本概念 1 列表 待搜尋的資料集合。2 關鍵字 要查詢的那個資料。3 查詢 一種演算法過程。二 基於線性表的查詢 1 順序查詢 1 思想 逐個比較,直到找到或者查詢失敗。2 時間複雜度 t n o n 3 空間複雜度 s n o n 4 程式 2 折半查詢 1 思想 又稱二分查詢,對於已經按照...
資料結構啟動篇
當手機電量僅剩下20 時,很多人會開始緊張,想找個地方充電,但是當我們一年的時間僅剩20 時,又有多少人會在意,會緊張?你的2016年,僅剩20 回顧這一年,跳了一次槽漲薪不到10 聽信了前同事和經理的忽悠以為獎金很多,可惜到現在也沒見毛 毛。工作也是剛來的時候天天加班,後來就是天天打醬油,但是做為...
資料結構篇 棧
本篇開始學習棧,首先棧這種資料結構是一種後進先出的結構,棧限定為只能在一段進行刪除或插入操作。比如我們要插入2 3 1三個數,按照2 3 1 的順序插入叫做入棧,出棧的順序就是1 3 2。現在嘗試寫乙個判斷回文串的程式。這裡講述用棧的思想來判斷回文串,主要思路是取字串的前半截入棧,然後確定要匹配的字...