系統程式設計師成長計畫 動態陣列(三)(上)

2021-09-30 03:32:31 字數 351 閱讀 1717

作者****:李先靜

排序大多數高階排序演算法都是針對陣列實現的,接下來我們一起學習一下幾種排序演算法,學習演算法本身只是我們的目標之一,最重要的是要從中學習一些思考問題的方法。對比不同演算法的特點,也有助於我們在設計時做出正確的選擇。

這裡我們請讀者實現氣泡排序、快速排序和歸併排序。要求如下:

o 演算法同時支援公升序和降序。按排序結果來看,有公升序和降序兩種。在公升序排列中,前面的元素總是小於/等於後面的元素。在降序中,前面的元素總是大於/等於後面的元素。

o 演算法同時支援多種資料型別。教科書上都是以整數排序為示例的,這種簡化有且讓學生集中精力在演算法本身上。但在現實中,我們不能再滿足了解演算法本身了,而是要寫出一些具有實用價值的程式來。

系統程式設計師成長計畫 動態陣列(一)

雙向鍊錶和動態陣列是最簡單的兩種資料結構,在研讀大量源 之後,我發現正是這兩種最簡單的資料結構有著最廣泛的應用。像平衡二叉樹這樣的複雜資料結構,除了學習之外,你永遠都不會寫第二遍,甚至連使用的機會都沒有,而雙向鍊錶和動態陣列則會在開發中反覆的運用。也正是由於這個原因,我們才選擇雙向鍊錶和動態陣列作為...

系統程式設計師成長計畫 動態陣列(二)

對比雙向鍊錶和動態陣列 在c語言中,陣列的長度是事先確定的,不能在執行時動態調整。所謂動態陣列就是它的長度可以根據儲存資料多少自動調整,這需要我們用程式來實現。對比雙向鍊錶和動態陣列,我們會發現 o 動態陣列本身占用一塊連續的記憶體,而雙向鍊錶的每個結點要占用一塊記憶體。在頻繁增刪資料的情況下,雙向...

系統程式設計師成長計畫 動態陣列(四)

有序陣列的兩個應用 前面我們學習了陣列的排序方法,通常我們對陣列排序不是為了排序而排序,而是為了其它的用途才排序的,這裡了解一下有序陣列的兩個常見應用。二分查詢 二分查詢也稱為折半查詢,它的前提是陣列中的元素是有序的。演算法過程如下 假定陣列為公升序 先拿要查詢的元素與陣列中間位置的元素相比較,如果...