/*靜態查詢的幾種方法*/
#include
#define maxsize 20
typedef struct lnode *list;
struct lnode;
/*順序查詢(sequential search),採用了建立哨兵的查詢思想,最好查詢複雜度o(1),最壞為o(n),平均查詢複雜度為o(n/2)*/
int sequentialsearch(list tb1,elementtype k)
/*二分查詢binary search,時間複雜度為o(logn)*/
/*前提n個資料元素的關鍵字滿足有序(排序至少要花費o(nlogn)的時間),並且是連續存放(陣列)*/
/* 二分查詢判定樹:
判定樹上的每個結點需要查詢的次數剛好等於該結點所在的層數;
查詢成功時查詢次數不會超過判定樹的深度
n個結點的判定樹的深度為[log2n]+1
平均成功查詢次數asl=(每層結點數*層數之和)/總的結點數 =log2(n+1)-1
二分查詢最壞情況和平均情況相當接近
二分查詢插入刪除都必須移動大量的結點,二分查詢適合那種一經建立就很少改動,而又經常需要查詢的線性表
對於那些查詢少而又經常需要改動的線性表,可以採用鍊錶作為儲存結構,經行順序查詢,鍊錶無法實現二分查詢
*//*假設有13個資料元素,按照關鍵字由小到大順序存放,二分查詢關鍵字為444的資料元素過程*/
int binarysearch(list tbl,elementtype k)
return notfound //查詢不成功,返回-1
}
順序查詢與二分查詢
先上 include void printarr int a,int n void bublesort int a,int n void swap int a,int b int binarysearch int a,int n,int k int normalsearch int a,int n,...
順序查詢 二分查詢
順序查詢 適用範圍 沒有進行排序的資料序列 缺點 速度非常慢,效率為o n cpp view plain copy 在code上檢視 片派生到我的 片 實現 template type sequencesearch type begin,type end,const type searchvalue...
順序查詢與二分查詢解析
非常簡單 示例1 在成績中查詢分數是100的第乙個分數 99 86 59 63 49 100 99 78 for int i 0 i示例2 在學生中查詢分數是100的第乙個學生 儲存結構可以是順序表,也可以是鍊錶。逐個比較查詢,如果找到,返回資料或者索引,如果到最後也沒有找到,返回null 可以是在...