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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ 二维数组 排序_漫画:“排序算法” 大总结

發布時間:2024/7/23 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ 二维数组 排序_漫画:“排序算法” 大总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?冒泡排序:

漫畫:什么是冒泡排序??mp.weixin.qq.com

選擇排序:

漫畫:什么是選擇排序??mp.weixin.qq.com

插入排序:

漫畫:什么是插入排序??mp.weixin.qq.com

此外還有冒泡排序的變種,雞尾酒排序:

漫畫:什么是雞尾酒排序?(修訂版)?mp.weixin.qq.com

第三梯隊的排序算法有什么共同點呢?它們的平均時間復雜度都是O(n^2)。

冒泡排序、選擇排序、插入排序之間,究竟有什么樣的差別呢?

首先從性能來分析,冒泡排序和插入排序的元素比較交換次數取決于原始數組的有序程度。

如果原始數組本來已經接近有序,只需要較少的比較交換次數即可完成排序。比如下面這個數組,只有7和8是逆序的:

如果原始數組大部分元素無序,則需要較多的比較交換次數。比如下面這個數組,絕大部分元素都是無序的:

在此基礎上,插入排序的性能略高于冒泡排序。為什么這么說呢?因為冒泡排序每兩個元素之間的交換是彼此獨立的,比如A和B交換,B和C交換,C和D交換:

而插入排序的元素交換是連續的,比如把B賦值給A,把C賦值給B,把D賦值給C,最后把A賦值給D:

顯然,歸并排序的連續交換方式省去了許多無謂的交換操作。

再來說說選擇排序,選擇排序和前面兩者不太一樣,它的元素比較交換次數是固定的,和原始數組的有序程度無關。

因此,當原始數組接近有序時,插入排序性能最優;當原始數組大部分元素無序時,選擇排序性能最優。

下面再說說排序的穩定性:

冒泡排序和插入排序是穩定排序,值相同的元素在排序后仍然保持原本的先后順序。

選擇排序是不穩定排序,值相同的元素在排序后不一定保持原本的先后順序。

希爾排序:

漫畫:什么是希爾排序??mp.weixin.qq.com

快速排序:

漫畫:什么是快速排序?(完整版)?mp.weixin.qq.com

歸并排序:

漫畫:什么是歸并排序??mp.weixin.qq.com

堆排序:

漫畫:什么是堆排序??mp.weixin.qq.com

第二梯隊的排序算法有什么共同點呢?它們的性能比第三梯隊要高一個量級,其中希爾排序的平均時間復雜度最快可以達到O(n^1.3),快速排序、歸并排序、堆排序的平均時間復雜度是O(nlogn)。

快速排序、歸并排序、堆排序之間,究竟有什么樣的差別呢?

還是先從性能來分析,雖然快速排序的平均時間復雜度是O(nlogn),但是在極端情況下,最壞時間復雜度是O(n^2)。

而歸并排序和堆排序的時間復雜度穩定在O(nlogn)。

至于平均時間復雜度,雖然三者同樣都是O(nlogn),但是堆排序比前兩者的性能略低一些。為什么呢?主要是由于二叉堆的父子節點在內存中并不連續。

在訪問內存數據時,對于順序存儲的數據,讀寫效率往往是最高的。根據CPU的空間局部性原理,CPU在每次訪問數據的時候,會把內存中相鄰的數據也一并存入緩存。這樣一來,CPU以后再訪問鄰近的數據就不需要重新訪問內存,而是訪問CPU緩存,從而大大提升了程序執行的效率。

下圖是有些夸張的示意:

在堆排序的過程中,常常需要父子節點之間進行比較和交換,而父子節點在數組中的位置并不是相鄰,而是相差兩倍左右:

反觀快速排序和歸并排序,無論是快速排序中把元素移動到pivot兩側,還是進行歸并排序中的merge操作,都是按照數組元素的自然順序依次進行比較和交換操作。

因此,堆排序的平均性能比快速排序和歸并排序略低。

至于排序的穩定性,歸并排序是穩定排序,快速排序和堆排序是不穩定排序。

此外,快速排序和堆排序是原地排序,不需要開辟額外空間。而歸并排序是非原地排序,在merge操作的時候需要借助額外的輔助數組來完成。

計數排序:

漫畫:什么是計數排序??mp.weixin.qq.com

桶排序:

漫畫:什么是桶排序??mp.weixin.qq.com

基數排序:

漫畫:什么是基數排序??mp.weixin.qq.com

第一梯隊的排序算法有什么共同點呢?它們的性能比第二梯隊又要高出一個量級,都屬于線性時間復雜度的排序算法。

雖然計數排序、桶排序、基數排序同為線性排序算法,但它們的時間復雜度有著很大不同:

計數排序的時間復雜度是O(n+m),其中m是原始數組的整數范圍。

桶排序的時間復雜度是O(n),這是在分桶數量是n的前提下。

基數排序的時間復雜度是O(k(n+m)),其中k是元素的最大位數,m是每一位的取值范圍。

至于排序的穩定性,這三種排序算法都屬于穩定排序。

有哪些又出門又奇葩的排序算法呢?

睡眠排序

猴子排序

珠排序

漫畫:三種 “奇葩” 的排序算法?mp.weixin.qq.com

這三種排序算法體現出了發明者天馬行空的想象力,大家可以拿來娛樂一下,但是在現實工作中如有排序需求,可千萬不要調用它們啊!

總結

以上是生活随笔為你收集整理的c++ 二维数组 排序_漫画:“排序算法” 大总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级二级在线观看 | 成人毛片100部免费看 | 欧美日韩在线网站 | 狠狠综合一区 | 99中文字幕在线观看 | 操碰在线观看 | 高清欧美性猛交xxxx黑人猛交 | 欧美日韩亚洲国产 | 福利在线免费视频 | 国产激情精品 | 天天躁日日躁aaaa视频 | 日本h片在线观看 | 美女毛片在线观看 | 国产av人人夜夜澡人人爽 | 国产夫妻视频 | 日韩欧美国产成人精品免费 | 久久久久久久久久久久久久久久久 | 欧美影视一区 | 精品三级国产 | 日韩精品视频一区二区三区 | 韩国av三级 | 穿扒开跪着折磨屁股视频 | 亚洲天堂网在线视频 | 亚洲人女屁股眼交6 | 嫩草研究院在线观看 | 成人精品久久久 | 天天天天干 | 亚洲 欧美 激情 另类 | 妇女一级片 | 四季av综合网站 | 国产三级理论 | 后进极品白嫩翘臀在线视频 | 插插网站 | 91成人免费网站 | 中国国产bdsm紧缚捆绑 | 手机在线免费观看av | 国产成人一区二区三区视频 | 国产综合免费视频 | 极品色综合| 亚洲三级影院 | 午夜小视频免费 | 免费久草视频 | av男人网 | 色哟哟一区二区三区四区 | 有码一区二区三区 | 亚洲国产中文在线 | 亚洲午夜剧场 | 久久性 | 女同二区 | 国产精品tv | 我们的生活第五季在线观看免费 | 欧美午夜在线观看 | www.麻豆av| 麻豆porn | 日韩久久一级片 | 椎名空在线| 成年丰满熟妇午夜免费视频 | av我不卡 | 狠狠人妻久久久久久综合蜜桃 | 无码人妻精品一区二区三区在线 | 国产极品一区 | 一二三区视频 | 久久久视| 国产偷拍一区二区 | 欧美一二区 | 精品久久久久久中文字幕 | 不卡av电影在线 | 操操操日日日 | 国产精品一区二区av白丝下载 | 午夜精品美女久久久久av福利 | 日本成人在线免费视频 | 红桃视频在线播放 | 日本精品视频在线播放 | 特黄视频在线观看 | 久久久国产精品无码 | 黄色片网站视频 | 国产乱子伦视频一区二区三区 | 少妇视频一区 | 久草超碰 | 午夜不卡在线 | www.啪啪| 免费在线观看成人av | www.天天射 | 黄色综合网站 | 精品黄色片 | 成人国产三级 | 欧美一区二区三区在线视频 | 精品国语对白 | 热热热色 | 无码视频一区二区三区 | 69视频一区 | a一级黄色 | √资源天堂中文在线视频 | 最新精品国产 | 九月婷婷色| 午夜影院在线观看免费 | 性做久久久久久免费观看欧美 | 色www情| 中国a级大片 |