28 排序演算法(1) 總體介紹

2021-08-16 06:07:22 字數 673 閱讀 1872

假設含有n個記錄的序列為,其相應的關鍵字分別為,需確定1,2,…,n的一種排列p1,p2,…pn,使其相應的關鍵字滿足kp1<=kp2<=…<=kpn非遞減(或非遞增)關係,即使得序列成為乙個按關鍵字有序的序列,這樣的操作就稱為排序。

在排序問題中,通常將資料元素稱為記錄。顯然我們輸入的是乙個記錄集合,排序後輸出的也是乙個記錄集合。所以我們可以將排序看成是線性表的一種操作。

排序的依據是關鍵字之間的大小關係,那麼對同一記錄集合,針對不同的關鍵字進行排序,可以得到不同序列。

假設ki=kj(1<=i<=n,1<=j<=n,i!=j),且在排序前的序列中ri領先於rj(即i< j)。如果排序後ri仍領先於rj,則稱所用的排序方法是穩定的;反之,若可能使得排序後的序列中rj領先ri,則稱所用的排序方法是不穩定的。如下圖所示

其中右上角的結果是穩定的排序結果,而右下角的結果是不穩定的排序結果。

排序演算法根據是否需要呼叫硬碟分為內排序(不需要)和外排序(需要),在接下來的部分將介紹的排序演算法都是內排序演算法。

(1) 時間效能:這裡指的是比較和移動兩者花費的時間的總和;

(1) 輔助空間:占用記憶體的情況;

(1) 演算法的複雜性:指的是演算法本身的複雜性,而不是時間複雜度。

演算法1 排序

氣泡排序 氣泡排序,比較相鄰的元素由小到大排序 function bubblesort arr return arr view code 快速排序 以基數為標準,最右開始查小於基數停止,最左邊開始查大於基數停止,互換位置停止的位置 left right表示基數左為小於基數,基數右大於基數的 拆分基數...

演算法 排序1 排序

題目 給定n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 輸入第一行給出正整數n 10 5 隨後一行給出n個 長整型範圍內的 整數,其間以空格分隔。在一行中輸出從小到大排序後的結果,數字間以1個空格分隔,行末不得...

09 排序1 排序

09 排序1 排序 25 分 給定n 個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 include include includeusing namespace std const int cutoff 1000...