排序演算法性能
Ⅰ 什麼是排序演算法的時間性能
時間性能包括關鍵碼的比較次數和記錄的移動次數,其中有一個起主導,每種都可能需要討論最好,最壞和平均性能,一般以平均和最壞為主
Ⅱ 基於關鍵字比較的排序演算法性能比較
三種排序的時間效率都是O(nlgn),然而快排是平均O(nlgn),而其他是最壞O(nlgn)。
針對隨機數據:
快排在隨機數據中是最快的,因為在隨機情況下,它的效率基本上是O(nlgn)。而因為它的代碼很緊湊,其省略的常數因子C很小,所以會快於歸並和堆排;
針對升序:
這是快排的最壞情況,為O(n^2)。而歸並和堆排都是O(nlgn),具體差別在歸並的區間劃分上,如果劃分得好,組成一個平衡二叉樹,兩者時間就是接近的。並且堆排這時候不需要執行建堆過程,速度會快一些。而歸並並不是就地排序,因此在空間消耗上,堆排更優;
針對降序:
情況和升序是一樣的。
針對待定區間:
沒怎麼看懂題,實在是不好意思……
Ⅲ 數據結構 排序演算法性能比較
首先各種不同的數量級,存在如下關系:
O(1)<O(log2n)<O(n)<O(n*log2n)<O(n^2)<O(n^3)<O(2^n)<O(n!)
然後就知道了,空間復雜度,歸並 > 快速 > 堆
註:空間復雜度是對一個演算法在運行過程中臨時佔用存儲空間大小的量度。
因此C是對的。
Ⅳ 排序演算法性能比較(數據結構)c語言程序
這題你只要把每個演算法的程序代碼看一下,在計算下就行
冒泡排序:兩個循環,從1加到N,(1+N)N/2 = 500500,最壞交換情況是每次判斷都要交換,既500500*3次
選擇排序:也是兩個循環,比較次數跟冒泡排序一樣500500,但是這個只要底層循環交換,既只需1000*3 = 3000次賦值。
插入排序:循環次數一樣500500,但是這個最壞情況是每比較一次就賦值一次,既需500500次賦值
希爾排序:時間復雜度是N^1.3倍,比較次數和賦值應該是1000^1.3次方。
歸並排序和快速排序,你去查查它的時間復雜度是怎麼算,O(lgN*N),好像有系數,演算法導論那本書上有,現在不記得是多少了。
希望能幫到你,
Ⅳ 快速排序演算法在什麼情況下性能會變的很差
首先它是一種排序演算法,排序演算法是為了讓無序的數據組合變成有序的數據組合。
有序的數據組合最大的優勢是在於當你進行數據定位和採用時,
會非常方便,因為這個數據是有序的
從而在代碼設計的時候會讓你避免很多不必要的麻煩,
因為無序數據你在進行推斷數據前後關系的時候會顯示很繁瑣
快速排序是排序中的一種,它在最差情況下和別的排序相差不大
而在最優,一般情況下,會比一般的排序方法更節省時間
這里的一般排序是指:起泡,希爾,插入等常規排序方法
其實我個人更喜歡插入,不過這對於鏈表操作更方便,因為容易操作……
Ⅵ 數據結構 各種排序演算法的性能比較
你說的這些排序演算法本身都不復雜,在網上搜搜就能找到,把演算法搞懂後在萊寫你那個課程設計就相當easy了。參考資料那個網站上就有幾種簡單的排序演算法以及c語言的實現
Ⅶ 數據結構中幾種常見的排序演算法之比較
實話實說,關於數據結構中幾種常見的排序演算法(例如:冒泡排序、SHELL排序、歸並排序、快速排序等)的性能好壞,還不只是學好了數據結構這門課程就能夠解決的問題,還必須要學習好、且精通掌握計算機軟體專業的另外一門非常重要的課程,才能夠解決這個問題。即:計算機演算法復雜性理論。
只有同時把這門課程學好了,那麼才能夠真正掌握數據結構中的各種排序演算法、以及各種查找演算法中所有涉及到的:比較次數、以及交換次數,最終才能夠根據具體的開發軟體規模的不同,選擇出一個適合開發該軟體的最佳演算法。
Ⅷ 數據結構的排序演算法中,哪些排序是穩定的,哪些排序是不穩定的
一、穩定排序演算法
1、冒泡排序
2、雞尾酒排序
3、插入排序
4、桶排序
5、計數排序
6、合並排序
7、基數排序
8、二叉排序樹排序
二、不穩定排序演算法
1、選擇排序
2、希爾排序
3、組合排序
4、堆排序
5、平滑排序
6、快速排序
排序(Sorting) 是計算機程序設計中的一種重要操作,它的功能是將一個數據元素(或記錄)的任意序列,重新排列成一個關鍵字有序的序列。
一個排序演算法是穩定的,就是當有兩個相等記錄的關鍵字R和S,且在原本的列表中R出現在S之前,在排序過的列表中R也將會是在S之前。
不穩定排序演算法可能會在相等的鍵值中改變紀錄的相對次序,但是穩定排序演算法從來不會如此。不穩定排序演算法可以被特別地實現為穩定。
做這件事情的一個方式是人工擴充鍵值的比較,如此在其他方面相同鍵值的兩個對象間之比較,就會被決定使用在原先數據次序中的條目,當作一個同分決賽。然而,要記住這種次序通常牽涉到額外的空間負擔。
(8)排序演算法性能擴展閱讀:
排序演算法的分類:
1、通過時間復雜度分類
計算的復雜度(最差、平均、和最好性能),依據列表(list)的大小(n)。
一般而言,好的性能是 O(nlogn),且壞的性能是 O(n^2)。對於一個排序理想的性能是 O(n)。
而僅使用一個抽象關鍵比較運算的排序演算法總平均上總是至少需要 O(nlogn)。
2、通過空間復雜度分類
存儲器使用量(空間復雜度)(以及其他電腦資源的使用)
3、通過穩定性分類
穩定的排序演算法會依照相等的關鍵(換言之就是值)維持紀錄的相對次序。
Ⅸ 在各類演算法中那種演算法排序是最快的
說句實話,沒有最快這一說。
如果不在乎浪費空間,應該是桶排序最快
如果整體基本有序,插入排序最快
如果考慮綜合情況,快速排序更加實用常見(希爾排序、堆排序等各種排序也各有優劣)
一般情況下,冒泡這種排序僅僅是名字起的有趣罷了,不太好用
Ⅹ 下列哪一種排序演算法的性能不受數組初始狀態的影響
1
這說的不是排序演算法是否穩定。
2
堆、冒泡、快速、插入排序演算法中,只有堆排序演算法的性能不受數組初始狀態的影響。
3
所謂演算法是穩定的是指:對關鍵字相同的記錄而言,如果按關鍵字進行排序後,這些記錄的相對順序沒有發生變化,則排序演算法就是穩定的。比如,按總分排序,張三與李四的總分相同,排序前張三在前,如果排序後張三還是在前,則排序演算法就是穩定的。
穩定的排序演算法有:
插入、冒泡、歸並、基數排序。
不穩定的排序演算法有:
堆、希爾、快速、選擇排序。