順序查詢 二分查詢

2021-08-11 04:51:39 字數 1898 閱讀 6316

順序查詢

適用範圍:

沒有進行排序的資料序列

缺點:速度非常慢, 效率為o(n)

[cpp] view plain copy 在code上檢視**片派生到我的**片

//實現  

template

type *sequencesearch(type *begin, type *end, const type &searchvalue)  

throw(std::range_error)  

return end;  

}  template

type *sequencesearch(type *array, int length, const type &searchvalue)  

throw(std::range_error)  

迭代二分查詢

應用範圍:

資料必須首先排序,才能應用二分查詢;效率為(logn)

演算法思想:

譬如陣列,查詢元素6,用二分查詢的演算法執行的話,其順序為:

1.第一步查詢中間元素,即5,由於5<6,則6必然在5之後的陣列元素中,那麼就在中查詢,

2.尋找的中位數,為7,7>6,則6應該在7左邊的陣列元素中,那麼只剩下6,即找到了。

二分查詢演算法就是不斷將陣列進行對半分割,每次拿中間元素和目標元素進行比較。

[cpp] view plain copy 在code上檢視**片派生到我的**片

//實現:迭代二分  

template

type *binarysearch(type *begin, type *end, const type &searchvalue)  

throw(std::range_error)  

return end;  

}  template

type *binarysearch(type *array, int length, const type &searchvalue)  

throw(std::range_error)  

遞迴簡介

遞迴就是遞迴...(自己呼叫自己),遞迴的是神,迭代的是人;

遞迴與非遞迴的比較

[cpp] view plain copy 在code上檢視**片派生到我的**片

//遞迴求解斐波那契數列  

unsigned long ficonaccirecursion(int n)  

[cpp] view plain copy 在code上檢視**片派生到我的**片

//非遞迴求解斐波那契數列  

unsigned long ficonacciloop(int n)  

return ans;  

}  遞迴二分查詢

演算法思想如同迭代二分查詢;

[cpp] view plain copy 在code上檢視**片派生到我的**片

//實現  

template

type *binarysearchbyrecursion(type *front, type *last, const type &searchvalue)  

throw(std::range_error)  

return null;  

}  template

int binarysearchbyrecursion(type *array, int left, int right, const type &searchvalue)  

throw (std::range_error)  

return -1;  

}  小結:

其實c++ 的stl已經實現好了std::binary_search(),在用的時候我們只需呼叫即可, 但是二分演算法的思想還是非常重要的, 在求解一些較為複雜的問題時, 我們時常能夠看到二分的身影.

順序查詢 二分查詢 索引查詢

1.查詢技術的分類。如下圖 2.什麼是順序查詢呢?無序表 順序查詢的原理很簡單,就是遍歷整個列表,逐個進行記錄的關鍵字與給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄。如果直到最後乙個記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢失敗。時間複雜度是o n 3....

順序查詢與二分查詢

先上 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,...

順序查詢和二分查詢

二分查詢 陣列裡查詢某個元素 search函式 其中 array為陣列,k為要找的值,low為查詢範圍的最小鍵值,high為查詢範圍的最大鍵值 function search array,k,low 0,high 0 if low high 如果還存在剩餘的陣列元素 elseif k array m...