(1)順序查詢
順序查詢比較簡單,其思路就是從順序表的頭部或者尾部依次查詢陣列,直到查詢數值為止。其平均查詢長度為:asl = (n+1)/2
**如下:
int searchbyindex(int* arr,int
length,int key)
}return
length;
}
(2)折半查詢
思路:折半查詢的前提條件是該順序表必須是有序的,先取該陣列的中間值進行比較,如果大於該值則說明要查詢的數值肯定是在其右邊,如果小於該值說明查詢的值肯定在其左邊,依次迴圈下去,可定會找到存在的值。其平均查詢長度為:asl = log2(n+1)-1
**如下:
int search_bin(int* arr, int length, int key)
else
if (key < arr[mid])
else
}cout << "不存在"
<< endl;
return -1;
}
(3)塊查詢
實現**:
struct index /*定義塊的結構*/
index_table[16]; /*定義結構體陣列*/
int block_search(int key, int a) /*自定義實現分塊查詢*/
void creat()
cout
<<"please input the number which do you want to search:\n";
cin>>key; /*輸入要查詢的數值*/
k = block_search(key, a); /*呼叫函式進行查詢*/
if (k != 0)
cout
else
cout
<<"no found!"; /*若未找到則輸出提示資訊*/
}}
資料結構學習筆記 線性表
線性表是零個或多個資料元素的有限序列。線性表的資料物件集合為。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係 線性表的順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。簡單的說...
資料結構學習 線性表
線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...
資料結構學習 線性表
考試前複習下資料結構,把一些知識點整理在這!主要參考了殷人昆主編的 資料結構 用物件導向方法與c 語言描述 這本書,以及中山大學劉聰老師的課件內容!鍊錶雙鏈表 線性表 linear list 是由n n 0 個資料元素 結點 a 0 a 1 a 2 a n 1 組成的有限序列。維基百科 線性表是乙個...