日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10种排序算法基础总结

發(fā)布時(shí)間:2025/6/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10种排序算法基础总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基于比較的排序:

  基礎(chǔ)排序:

     ?冒泡排序:誰大誰上,每一輪都把最大的頂?shù)教旎ò?效率太低——掌握swap。

    選擇排序:效率較低,但經(jīng)常用它內(nèi)部的循環(huán)方式來找最大值和最小值。

    插入排序:雖然平均效率低,但是在序列基本有序時(shí),它很快,所以也有其適用范圍。

    希爾排序(縮小增量排序):是插排的改良,對空間思維訓(xùn)練有幫助 時(shí)間復(fù)雜度O(n1.3),介于O(nlgn)~O(n2)之間

  分治法:

    快速排序:是軟件工業(yè)中最常見的常規(guī)排序法,其雙向指針掃描和分區(qū)算法是核心,特別地partition算法用來劃分不同性質(zhì)的元素,如選擇第K大元素的問題。快速排序時(shí)間復(fù)雜度為O(NlgN),但是如果主元不是中位數(shù)的話,特別地如果每次主元都在數(shù)組區(qū)間的一側(cè),復(fù)雜度將退化為N2,工業(yè)上的優(yōu)化方法見快速排序分區(qū)以及優(yōu)化方法。快速排序重視子問題的劃分

    歸并排序:分治法的完美使用,開辟了輔助空間,常見的題目如逆序?qū)?shù),歸并排序重視子問題的解的合并

    堆排序:用到了二叉堆數(shù)據(jù)結(jié)構(gòu),是繼續(xù)掌握樹結(jié)構(gòu)的起手式 堆排序 ?= 插排 + 二分查找

    上面三個(gè)都是NlgN的復(fù)雜度,其中快排表現(xiàn)最好,是原址的不用開辟輔助空間;歸并排序需要開辟輔助空間;堆排也是原址的,但是常數(shù)因子較大,不具備優(yōu)勢。

基于非比較排序:

  計(jì)數(shù)排序:可以說是最快的,用它來解決問題時(shí)必須注意如果序列中的值分布非常廣(最大值很大,元素分布很稀疏),那么空間將會浪費(fèi)很多,所以計(jì)數(shù)排序的使用范圍是:序列的關(guān)鍵字比較集中,已知邊界,且邊界較小。

  桶排序:用它解決問題必須注意序列的值是否均勻地分布在桶中。如果不均勻,那么個(gè)別桶中的元素會遠(yuǎn)多于其他桶,桶內(nèi)排序用比較排序,極端情況下,全部元素在一個(gè)桶內(nèi),那么復(fù)雜度還是會退化成NlgN。

  基數(shù)排序:kN級別(k是最大數(shù)的位數(shù))是整數(shù)數(shù)值型排序里面又快又穩(wěn)的,無論元素分布如何,只開辟固定的輔助空間(10個(gè)桶),基數(shù)排序幾乎不需要任何“比較”操作。因此,在實(shí)際應(yīng)用中,對十進(jìn)制整數(shù)來說,基數(shù)排序更好用。

  上面三種排序其實(shí)都是支持負(fù)數(shù)的,我們可以找出最小的數(shù)來,計(jì)算出與0的距離,然后把所有的數(shù)同時(shí)減去這個(gè)距離,這樣就全部成為自然數(shù),排好序然后再恢復(fù)回去就OK了。

十種排序算法對比:

  

?

轉(zhuǎn)載于:https://www.cnblogs.com/xiaoyh/p/10286280.html

總結(jié)

以上是生活随笔為你收集整理的10种排序算法基础总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。