聲明:碼字不易,轉載請註明出處,歡迎文章下方討論交流。
前言:Java數據結構與算法專題會不定時更新,歡迎各位讀者監督。在介紹各種排序算法以前,本篇先聊聊算法中的一些必備知識。java
Java數據結構與算法——桶排序
Java數據結構與算法——快速排序算法
算法的時間複雜度是一個函數,其定量的描述了一個算法運行時間和輸入規模之間的關係。一般用O表示,且不包括這個函數的低階和首項係數。若是一個算法的執行時間爲2n^2+5n+4,那麼該算法時間複雜度就能夠表示爲O(n^2)。segmentfault
通常的時間複雜度,由好到壞大概有這麼幾種O(1)、O(logn)、O(n)、O(nlogn)、O(n^k)(k>=2),通常狀況下,當算法時間複雜度高於O(n^2)時,性能就變得至關差,此時就該想辦法尋求更優的方案。數據結構
for(int i=0;i<n;i++){ //code... for(int j=0;j<n;j++){ //code... } }
for(int i=0;i<n;i++){ //code... for(int j=i;j<n;j++){ //code... } }
for(int i=0;i<n;i+=2){ //code... }
//與n無關的有限次的表達式,例如賦值,簡單的運算等
空間複雜度是一個算法執行過程當中所消耗的臨時空間的一個度量。同時間複雜度同樣,也不包括這個度量函數的低階項和首項係數。相對的應的,空間複雜度也有O(1)、O(logn)、O(n)、O(nlogn)、O(n^k)(k>=2)。函數
在排序算法中,評估一個算法的優劣,除了時間複雜度和空間複雜度之外,還有一個衡量指標就是穩定性。在一個待排序的序列中,可能存在多個相等的項,通過排序後若是這些項的相對次序保持不變,則咱們說這個算法是穩定的,不然就是不穩定的。性能
研究穩定性的意義在於,若是算法是穩定的,那麼第一個元素排序的結果能夠被第二個等值的元素在排序時所用,也就是說能夠避免多餘的比較。code
在介紹排序算法以前,本篇先對後面排序算法的基本概念說叨說叨,打下一個基礎鋪墊。排序
排序算法索引(待更)
Java數據結構與算法——桶排序
Java數據結構與算法——快速排序
碼字不易,如對您有幫助,歡迎點贊收藏打賞^_^索引