taocp第三卷搜尋演算法中最先講的就是順序搜尋。
順序搜尋的優點是足夠的簡單,在資料量足夠小的時候速度最快。
而且在無序資料集的時候順序搜尋是唯一可行的方法。
首先是6.1節的程式s
int search(int array,int count, int n)
}return -1;
}
非常簡單,但是每個迴圈需要比較兩次。
通過在尾部追加乙個哨兵值,可以把比較次數降為一次。
這就是6.1節的演算法q:
int search(int array,int count, int n)
array[count] = t; //還原現場
if(i < count)
}
當n比較大的時候會比演算法s快一些。但是要求在array的尾部有多餘的空間,
記憶體分配的時候需要注意一點。
演算法q有個乙個優化版q'
int search(int array,int count, int n)
if(array[i+1] == n)
i += 2
}array[count] = t;
if(i < count)
}
一次步進2,算是一種手工的迴圈展開吧。
不過gcc使用-o3引數時會自動進行迴圈展開,
這種工作還是留給編譯器吧。
如果資料是有序的,則可以使用演算法t:
int search(int array,int count, int n)
array[count] = t;
//array[i] >= n
if(i < count && array[i] == n)
}
在查詢成功的時候演算法t和演算法q一樣快,
但是失敗的時候t比q大約兩倍。
對於有序資料可以使用更快的二分查詢,
但是並不是所有的時候二分查詢都跟快。
在資料總數n比較小的時候,演算法t更快,而且t更簡單。
TCP IP詳解,卷1 協議,第三章IP 網際協議
小結 1.對ip首部的講解。2.ip路由選擇 如果目的主機在直接相連的網路上,那麼就把資料報直接傳給目的主機,否則傳給預設路由器。3.在進行路由選擇決策時,主機和路由器都使用路由表。在表中有三種型別的路由 特定主機型 特定網路型和預設路由型。主機路由 網路路由 預設路由。4.ip路由是通過逐跳來實現...
UNIX網路程式設計卷一 第三章 位址定義及相關函式
本章主要說明 1.5中不同的套接字位址,以及其結構體定義,和使用說明。2.網路位址的結構體 數字 和字串相互轉換函式。3.位元組序測試,調整函式。4.記憶體按位元組操作函式。一 套接字位址結構 這些結構體位址很多,感覺很難記,可能要以後多實踐吧。所有網路位址都是以sockaddr 開頭的結構體組成,...
《MSDN開發精選》第三期卷首 八月繁花開
繁花八月天,京城依舊喧囂,只是和往年有所不同 總是有淅淅瀝瀝的雨在飄飛忙碌的心情。這是乙個愜意的季節,也是乙個繁花盛開的季節。隨著visual studio 2005 beta以及express的公布,千萬人翹首企盼的 whidbey 也真正走入我們的視野。有些人冷眼旁觀,有些人搶先嘗新了一把,對於...