資料結構之排序

2021-06-22 01:09:23 字數 929 閱讀 7581

在待排序的檔案中,若存在多個關鍵字相同的記錄,經過排序後這些具有相同關鍵字的記錄之間的相對次序保持不變,該排序方法是穩定的;若具有相同關鍵字的記錄之間的相對次序發生變化,則稱這種排序方法是不穩定的。

穩定的排序

時間複雜度  

空間複雜度

氣泡排序

最差和平均是o(n2),最好是o(n) 

1 雙向氣泡排序

最差和平均是o(n2),最好是o(n)

1插入排序

最差和平均是o(n2),最好是o(n)

1歸併排序

最差、平均、最好都是o(nlogn)

o(n) 

桶排序o(n)

o(k) 

基數排序

o(d(n+r))(d是常數)

o(r) 

二叉樹排序

o(nlogn)

o(n) 

圖書館排序

o(nlogn)

(1+e)n

不穩定的排序

時間複雜度

空間複雜度

選擇排序

最差和平均是o(n2),最好是o(n)

1希爾排序

o(nlogn)-o(n2),平均時間o(nsqrt(n))

1堆排序

最差、平均、最好都是o(nlogn)

1快速排序

平均o(nlogn),最差是o(n2)

o(nlogn)

下面的是修正過的選擇排序法,每一趟排序從整個序列裡找乙個值最小的下標,如果外迴圈最初的那個小就發生交換。

#includeusing namespace std;

void sort(int a,int start,int end)

}int main()

; sort(a,10);

for(int i=0;i<10;i++)

cout<

資料結構之排序

package com.small 注意a 0 是否有意思,書上c語言基本都是將a 0 作為哨兵,那麼0號元素不能用,我這裡全部是flag代替 author small leaf public class sort else for j i 1 j high 1 j a high 1 flag 希爾...

資料結構之排序

常用的幾種排序方法 冒泡 插入 選擇 快排 歸併排序 1 冒泡 以公升序為例,也是有兩種思路,1 num 0 依次與後面比較將最小的放到第一位 2 將最大的放到最後一位。我比較習慣用第一種 1 include include using namespace std int main for int ...

資料結構之排序

目錄 氣泡排序 選擇排序 插入排序 shell排序 歸併排序 快速排序 堆排序void bubblesort int arr,int size 每一輪迴圈都把最小的數放在陣列的前半部分 void selectsort int arr,int size if arr min arr i 如果min已被...