涵義
· 雖說快速排序是由氣泡排序改進而來,二者都是通過元素交換達到排序效果,但是在個人看來快速排序思想和冒泡完全不同。
時間複雜度
· 直接插入排序最好的時間複雜度為o(nlog2n)
· 直接插入排序的最壞時間複雜度為o(n2)
· 因此直接插入排序總的平均時間複雜度為o(nlog2n)
注:不穩定
快速排序之所以比冒泡具有更高的效率,主要是它裡面用到的分治思想,如上圖所示,第一遍遞迴完成,比23小的與比23大的分到兩邊,再次遞迴則是對15-21進行一次與上圖相同的排序,31-44也是如此。
下面測試例項中,times中完成的就是上圖做的工作,每次排序完成在fastsort()中拿到index,即圖中23,然後對left到index-1,和index+1到right,分別遞迴(此處的low,high,我用的是left,right),而一開始用於比較的數稱為基準,一般取最左側或最右側值。
前端演算法入門 快速排序
以前不寫技術部落格,但寫文章,寫段子,深刻體會過 寫 的妙處。寫部落格,不止是分享的過程,更不是單純的記錄,它還有個特殊功效,就是產生更多細緻具體的思考。思維在腦海中是完全自由的,但落筆時,它受到約束,你必須讓自己有理有據。所以很多思維上的小漏洞,會在寫出來時暴露,而新的想法,也可能會在落筆的時候促...
演算法入門(1) 快速排序
下面是用c 寫的 快速排序 的函式 讀出和寫入檔案的函式 常規快速排序的函式 引入隨機基準快速排序的函式 快速排序很簡單,但是還要記錄一下 include include include include include using namespace std 函式區 vector int readf...
排序演算法 快速排序演算法
網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!作為程式設計人員,需要邁過去 資料結構與演算法 這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。一 快速排序演算法思想 從一組資料中找出乙個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,...