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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

堆排序时间复杂度_堆排序算法

發(fā)布時間:2025/6/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 堆排序时间复杂度_堆排序算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

堆排序是指利用堆積樹這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法,它是選擇排序的一種。可以利用數(shù)組的特點(diǎn)快速定位指定索引的元素。堆是一個優(yōu)先級隊列,對于大頂堆而言,堆頂元素的權(quán)值最大。將待排序的數(shù)組建堆,然后不斷地刪除堆頂元素,就實(shí)現(xiàn)了排序。

堆排序基本思想

將待排序序列構(gòu)造成一個大頂堆,此時,整個序列的最大值就是堆頂?shù)母?jié)點(diǎn)。將其與末尾元素進(jìn)行交換,此時末尾就為最大值。然后將剩余n-1個元素重新構(gòu)造成一個堆,這樣會得到n個元素的次小值。如此反復(fù)執(zhí)行,便能得到一個有序序列。

堆是具有下列性質(zhì)的完全二叉樹:每個節(jié)點(diǎn)的值都大于或等于其左右孩子節(jié)點(diǎn)的值,稱為大根堆;每個節(jié)點(diǎn)的值都小于或等于其左右孩子節(jié)點(diǎn)的值,稱為小根堆。堆排序的最壞時間復(fù)雜度為O(n*log2n),平均時間復(fù)雜度為O(n*log2n)。

堆排序算法復(fù)雜度

對N個元素建堆的時間復(fù)雜度為O(N),刪除堆頂元素的時間復(fù)雜度為O(logN),盡管隨著元素的不斷刪除,堆的調(diào)度越來越小,但是總的而言,刪除堆所有元素的時間復(fù)雜度為O(NlogN)。故堆排序的時間復(fù)雜度為O(NlogN),空間復(fù)雜度為O(1)。

對于堆排序而言,數(shù)據(jù)的初始順序?qū)λ膹?fù)雜度沒有影響。不管數(shù)組初始時就是有序的還是逆序的,它都會先建堆,變成了堆序的性質(zhì)。從這點(diǎn)上分析,堆排序是一個非常穩(wěn)定的算法,最壞和平均情況下的時間復(fù)雜度都為O(NlogN)。

堆排序的步驟

大根堆有一個很好的性質(zhì),根節(jié)點(diǎn)的數(shù)值總是大于其他所有節(jié)點(diǎn)的數(shù)值,利用大根堆的這個性質(zhì),可以實(shí)現(xiàn)排序的工作。步驟如下:

1、構(gòu)建大根堆。首先我們的原始數(shù)組一般情況下是不滿足堆的條件,既然我們要可用大根段的性質(zhì)進(jìn)行排序,第一步當(dāng)然是對原始數(shù)組進(jìn)行處理,構(gòu)建大根堆。

2、根節(jié)點(diǎn)數(shù)據(jù)處理以及大根堆重構(gòu)。構(gòu)建大根堆元素之后,根節(jié)點(diǎn)的元素是最大值。然后將該數(shù)值取出,對剩下的元素進(jìn)行重構(gòu)大根堆,這時根節(jié)點(diǎn)是剩下元素的最大值,取出。只要不斷重復(fù)上述的操作,不斷取出未排序元素的最大值,直到未排序的元素只剩一個,就完成了排序工作。

堆排序算法分析

堆排序的運(yùn)行時間主要是消耗在初始構(gòu)建堆和在重建堆時的反復(fù)篩選上。在構(gòu)建堆的過程中,因為我們是完全二叉樹從最下層最右邊的非終端結(jié)點(diǎn)開始構(gòu)建,將它與其孩子進(jìn)行比較和若有必要的互換,對于每個非終端結(jié)點(diǎn)來說,其實(shí)最多進(jìn)行兩次比較和互換操作,因此整個構(gòu)建堆的時間復(fù)雜度為O(n)。

在正式排序時,第i次取堆頂記錄重建堆需要用O(logi)的時間(完全二叉樹的某個結(jié)點(diǎn)到根結(jié)點(diǎn)的距離為log2i+1),并且需要取n-1次堆頂記錄,因此,重建堆的時間復(fù)雜度為O(nlogn)。

總體來說,堆排序的時間復(fù)雜度為O(nlogn)。由于堆排序?qū)υ加涗浀呐判驙顟B(tài)并不敏感,因此它無論是最好、最壞和平均時間復(fù)雜度均為O(nlogn)。這在性能上顯然要遠(yuǎn)遠(yuǎn)好過于冒泡、簡單選擇、直接插入的O(n2)的時間復(fù)雜度。

再簡單總結(jié)下堆排序的基本思路:

A、將無需序列構(gòu)建成一個堆,根據(jù)升序降序需求選擇大頂堆或小頂堆;

B、將堆頂元素與末尾元素交換,將最大元素"沉"到數(shù)組末端;

C、重新調(diào)整結(jié)構(gòu),使其滿足堆定義,然后繼續(xù)交換堆頂元素與當(dāng)前末尾元素,反復(fù)執(zhí)行調(diào)整和交換步驟,直到整個序列有序。

最后

堆排序是一種選擇排序,整體主要由構(gòu)建初始堆+交換堆頂元素和末尾元素并重建堆兩部分組成。其中構(gòu)建初始堆經(jīng)推導(dǎo)復(fù)雜度為O(n),在交換并重建堆的過程中,元素需交換n-1次,而重建堆的過程中,根據(jù)完全二叉樹的性質(zhì),[log2(n-1),log2(n-2)...1]逐步遞減,近似為nlogn。所以堆排序時間復(fù)雜度一般認(rèn)為就是O(nlogn)級。

總結(jié)

以上是生活随笔為你收集整理的堆排序时间复杂度_堆排序算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本三区在线 | 69国产精品视频 | 电影《两个尼姑》免费播放 | √天堂资源地址在线官网 | 超碰在线免费播放 | 亚洲精品一区二区三区婷婷月 | 亚洲欧洲日本精品 | 国产一级一区 | 免费视频91蜜桃 | 欧美性大战xxxxx久久久 | 在线视频97 | 日韩在线 中文字幕 | 成人网免费视频 | 日韩久久一区 | 成人手机在线免费视频 | 日本一区二区在线观看视频 | 亚洲国产果冻传媒av在线观看 | 爽天天天天天天天 | 永久免费无码av网站在线观看 | 日韩亚洲视频在线观看 | 18禁男女爽爽爽午夜网站免费 | 91av片| 少妇名器的沉沦 | 五月婷网站 | 久久天天躁狠狠躁夜夜av | 超级碰碰97 | 激情小说欧美色图 | 我和单位漂亮少妇激情 | 夜夜免费视频 | 最新中文字幕在线观看视频 | 96精品 | 久久一二 | 亚洲色婷婷久久精品av蜜桃 | 日本亚洲在线 | 视频一区 中文字幕 | 三级网站免费观看 | 欧美一区二区三 | 青草一区二区 | 玖玖爱在线观看 | 国产www免费观看 | 色欲国产精品一区二区 | 国产女人18毛片水真多 | 在线黄色网页 | 国产视频xxxx | 国产高清精品软件丝瓜软件 | sm久久捆绑调教精品一区 | 免费av在线网址 | 欧美日韩一区二区三区视频 | 国产精品久热 | 狠操av | 国产精品人人做人人爽 | 久久久久久久久久久久久久久 | 男人的天堂免费视频 | 黄色三级大片 | 在线观看岛国av | 91色交| 日本xxx高清| 亚洲欧洲视频 | 日韩电影一区 | 久久噜噜噜精品国产亚洲综合 | 极品色av | 久草精品视频在线观看 | 国产综合图区 | 在线免费你懂的 | 黄色长视频 | av88av| 动漫美女被到爽流 | 久久精品国产亚洲av蜜臀色欲 | 五月婷婷狠狠爱 | 精品国产三级片在线观看 | 国产区一区二区三区 | 午夜av在线免费观看 | 夜夜天天拍拍 | 伊人久久大香线蕉av色婷婷色 | 国产又粗又长视频 | 亚洲第一区av | 97人人艹 | 91精品视频一区二区三区 | 女人的毛片| 伊人色区 | 操网| 成人在线视频免费 | 黄色片子看看 | 国产又粗又猛又大爽 | 日韩一级片免费在线观看 | 99精品小视频 | 欧美在线视频免费观看 | 99久久精品国产成人一区二区 | 日韩精品免费在线观看 | 无码人妻丰满熟妇区毛片蜜桃精品 | 免费观看成年人视频 | 中文字幕+乱码+中文字幕明步 | 青青草原免费观看 | 夜夜操影院 | 日韩在线观看 | 久久久久女人精品毛片九一 | 少妇高潮惨叫久久久久 | 久久精品国产精品 | 欧美看片|