經典排序演算法PHP實現教程

來源:互聯網
上載者:User

標籤:排列   基本   語句   程式   使用   過程   空間複雜度   大小   ima   

所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序演算法,就是如何使得記錄按照要求排列的方法。排序演算法在很多領域得到相當地重視,尤其是在大量資料的處理方面。一個優秀的演算法可以節省大量的資源。在各個領域中考慮到資料的各種限制和規範,要得到一個符合實際的優秀演算法,得經過大量的推理和分析。

演算法複雜度分為時間複雜度和空間複雜度。其作用:時間複雜度是指執行演算法所需要的計算工作量;而空間複雜度是指執行這個演算法所需要的記憶體空間。

 時間頻度

 一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且每個演算法花費的時間與演算法中語句的執行次數成正比,哪個演算法中語句執行次數多,它花費時間就多。一個演算法中的語句執行次數稱為語句頻度或時間頻度,記為T(n)。

時間複雜度

在時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度T(n)也會不斷變化。但有時我們想知道它變化時呈現什麼規律,為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得當n趨近於無窮大時,T(n) / f(n) 的極限值為不等於零的常數,則稱f(n)是T(n)的同數量級函數。記作T(n) = O( f(n) ),稱O( f(n) )為演算法的漸進時間複雜度,簡稱時間複雜度。

在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出T(n)的同數量級(它的同數量級有以下:1,log2n, n, nlog2n, n2,n3,2n,n!),找出後,f(n) = 該數量級,若 T(n) / f(n)求極限可得到一常數c,則時間複雜度T(n) = O( f(n) )。

 空間複雜度

 一個程式的空間複雜度是指運行完一個程式所需記憶體的大小。利用程式的空間複雜度,可以對程式的運行所需要的記憶體多少有個預先估計。一個程式執行時除了需要儲存空間和儲存本身所使用的指令、常數、變數和輸入資料外,還需要一些對資料進行操作的工作單元和儲存一些為現實計算所需資訊的輔助空間。程式執行時所需儲存空間包括以下兩部分:

 a )、固定部分。這部分空間的大小與輸入/輸出的資料的個數多少、數值無關。主要包括指令空間(即代碼空間)、資料空間(常量、簡單變數)等所佔的空間。這部分屬於靜態空間。b )、可變空間。這部分空間主要包括動態分配的空間,以及遞迴棧所需的空間等。這部分的空間大小與演算法有關。一個演算法所需的儲存空間用f(n)表示。S(n) = O( f(n) ) 其中n為問題的規模,S(n) 表示空間複雜度。

分類

排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是指在排序期間全部對象太多,不能同時存放在記憶體中,必鬚根據排序過程的要求,不斷在內,外存間移動的排序。常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。用一張圖概括:

 

 

 

 

 

 

經典排序演算法PHP實現教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.