TAOCP第三卷6 1節 順序搜尋

2021-08-30 02:00:30 字數 1130 閱讀 1887

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 也真正走入我們的視野。有些人冷眼旁觀,有些人搶先嘗新了一把,對於...