1. 程式人生 > >資料結構——排序與查詢(1)——排序與查詢簡介

資料結構——排序與查詢(1)——排序與查詢簡介

排序與查詢

排序,是指將一系列無序的記錄,通過某種方式或者演算法,將其變為有序的過程。如果排出來的順序是由小到大排列,我們就稱這種排序叫升序排序。如果是由大到小,我們就稱為降序排序。例如有一組資料 :
開始時為: 2 4 7 1 9
升序排序: 1 2 4 7 9
降序排序: 9 7 4 2 1
根據排序的數量大小和是否需要訪問外存,我們又將演算法分為內部排序和外部排序。內部排序是指要排序的元素比較小,並且不需要訪問外存即可完成對資料的排序操作。外部排序是指要排序的元素比較多,且需要訪問外存。對應的演算法又稱為內部排序演算法和外部排序演算法。

查詢,是指在某些特定的資料結構中,對給定的值(key),進行查詢相應位置的過程。這種資料結構的包括連結串列,二維陣列資料結構或樹和圖等等。對不同的資料結構進行搜尋往往具有不一樣的演算法和空間複雜度。

排序與查詢的關係

那麼言歸正傳,排序與查詢之間是否存在聯絡呢?答案是肯定的,不然我也不會放在一起寫。總的來說,排序方便查詢,有時候可以大大的降低查詢的時間。我們上課的時候老師特意給我們舉過一個簡單的例子:當你的資料庫的記錄太多的時候,一定要進行排序。為什麼呢?假設你的資料庫有10,000,000條記錄,倘若你不對資料進行排序後再查詢,那麼你的平均查詢次數是(10,000,000 / 2)次。如果我們將資料進行過排序(假設是升序排序),那麼利用折半查詢法,可以在2^n = 10,000,000 次下找到對應的數值。於是平均只需進行10幾次(即N的值)的搜尋,便可以確定我們的數值。速度提升了好幾個數量級。

所以,有時候排序是為了更好的查詢而服務的。同樣的,對於上面的例子,排序演算法的優劣也會影響程式的整體的執行速度。