靜態查詢方法(順序查詢與二分查詢)

2021-08-11 01:47:53 字數 842 閱讀 4937

/*靜態查詢的幾種方法*/

#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 可以是在...