本篇博客中的代碼實現(xiàn)依然采用Swift3.0來實現(xiàn)。在前幾篇博客連續(xù)的介紹了關于查找的相關內容, 大約包括線性數(shù)據(jù)結構的順序查找、折半查找、插值查找、Fibonacci查找,還包括數(shù)結構的二叉排序樹以及平衡二叉樹的構建與查找,然后還聊了哈希表的構建與查找。接下來的幾篇博客中我們就集中的聊一下常見的集中排序方式,并并給出相應的時間復雜度。本篇博客我們將會詳細的介紹冒泡排序、插入排序、希爾排序以及選擇排序,下篇博客將繼續(xù)介紹堆排序、歸并排序以及快速排序的相關內容。當然上述內容的代碼實現(xiàn)我們依然采用Swift面向對象語言來實現(xiàn)。
本篇博客的思路與以往博客的思路一直,先分析每種排序的規(guī)則,然后給出原理示意圖,最后根據(jù)示意圖給出相應的代碼實現(xiàn)。編程這東西,只要是思路清晰,給出相應的代碼實現(xiàn)并不困難,本篇是使用Swift語言來實現(xiàn)的,如果你對Swift語言不熟悉,你可以選擇其他你熟悉的語言來實現(xiàn)。雖然語言不同,但是思路和方法都是一樣的。廢話少說,開始今天博客的主題。
一、排序協(xié)議的定義
在博客的開頭的,我們先給出排序協(xié)議的定義。因為我們本篇博客含有多種排序方式,為了使每種排序方法對外調用方式一致,我們需要定義一個排序的相關協(xié)議。所有排序的相關類都必須遵循該協(xié)議,讓此協(xié)議來定義具體的排序類對外的調用方式。
下方的SortType協(xié)議就是我們定義的排序類型的協(xié)議。其中的sort()方法是遵循該協(xié)議的類必須要實現(xiàn)的方法。sort()函數(shù)的參數(shù)是一個含有Int類型的數(shù)組,該數(shù)組就是要排序的數(shù)組。該方法的返回值是已經被排好序的數(shù)組。具體代碼如下所示。
網(wǎng)友評論