順序查詢:速度慢
例如:100萬個資料,平均要找50萬次
沒有排序的資料:只能順序查詢
#include
using namespace std;
int sequesearch(int *a, const int n, const int x);
int main()
;int result;
int num=7;
result=sequesearch(m,10,num);
if(result<0)
cout<<"沒找到"< return i;
}if(i==n) return -1;
折半查詢(二分查詢):2的20 次方=100萬(就是1m)
2的30 次方=10億(就是1g)
要求資料已經排序
有趣的例子:蘭州拉麵
#include
using namespace std;
int binarysearch(int *a,const int x,const int n);
int main()
;int result;
int num=8;
result= binarysearch(x,num,10);
if(result<0)
cout<<"沒找到!"return mid;
else if(a[mid] low=mid+1;
else if(a[mid]>x)
high=mid-1;
}return -1;
}
資料結構4 順序查詢與折半查詢
順序查詢 針對無序的資料,有序的資料可以用更高效的資料查詢方式 在無序的資料查詢中,順序查詢是最入門 最簡單的演算法,該演算法雖然簡單,但是當資料量增多時,查詢效率較低。比如在100萬資料中,平均需要查詢大約50萬次,從演算法角度來說,是很難接受的。從演算法角度來說,很自然要考慮到演算法的優化。經過...
實現折半查詢 資料結構與演算法 查詢
相關知識 折半查詢通常是針對順序儲存的線性表,線性表的結點按關鍵碼從小到大排序,後面稱之為折半查詢的順序表。為了簡化討論,假設折半查詢的順序表中每個結點只含乙個關鍵碼,關鍵碼為整數。圖 1 給出了乙個儲存了 4 個關鍵碼的折半查詢的順序表的儲存結構圖。下面描述了線性表順序儲存的一種實現方案。該實現方...
資料結構 查詢演算法(折半查詢)
當乙個順序表的元素是有序排列的,這時我們才可以使用折半查詢。我們查詢的過程是找到中間位置判斷這個位置上的值是不是目標值,若是則直接找到,若不是,判斷中間位置上的值與目標值的大小關係,若是大於目標值說明我們要查詢的目標值在前半部分,小於則說明是在後半部分,然後我們在要找的部分裡面用上面同樣的方式查詢,...