排序演算法的比較

2021-09-10 14:13:45 字數 1121 閱讀 2699

快排和歸併

1.思想:都使用了分治的思路。歸併是先區域性有序再組合起來,快排是先大體有序(前半部分小於某個數,後半部分大於某個數)在區域性排好。

2.時間複雜度:歸併是嚴格的nlogn;快排平均時間複雜度nlogn(因為標桿的數不一定是在最中間),最壞有可能退化到n^2。

3.空間複雜度:歸併需要額外乙個空間用來合併,快排可以原地排序。

4.穩定性:快排不穩定,歸併可以穩定。

歸併排序:

class solution 

void mergesort(vector&a,int start,int end,vector&tmp) else

}while (left<=(start+end)/2) tmp[index++]=a[left++];

while (right<=end) tmp[index++]=a[right++];

for (int i=start;i<=end;i++)

a[i]=tmp[i];

}};

快排:

class solution 

void quicksort(vector&a,int start,int end)

if (left<=right)

}//這時right已經在left左邊了

quicksort(a,start,right);

quicksort(a,left,end);

}};

143. 排顏色 ii

如果沒有原地排序的要求,可以使用計數排序。原地的話類似快排,只不過pivot不是隨機找的而是根據顏色區間定的。由於pivot也是由colorto和colorfrom定的,所以要注意往兩邊排序的條件,左邊是小於等於,右邊是大於。

class solution 

void sort(vector&colors,int start,int end,

int colorsfrom, int colorsto)

}sort(colors,start,j,colorsfrom,mid);

sort(colors,i,end,mid+1,colorsto);

}};

演算法 排序演算法的比較

預設為遞增順序 注 一下例子希望自己再次複習時,可以用筆在紙上畫畫記憶體圖。包括有 選擇排序 1 選擇排序 1 選擇排序的思想是,每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。選擇排序1 private static void selec...

排序演算法的比較

排序方法 平均時間 最壞情況 輔助空間 簡單排序 o n 2 o n 2 o 1 快速排序 o nlogn o n 2 o logn 堆排序 o nlogn o nlogn o 1 歸併排序 o nlogn o nlogn o n 基數排序 o d n rd o d n rd o rd 1 從平均效...

排序演算法比較

本章中已經研究並仔細分析了多個內部排序方法。對於這些內部排序方法之間的比較,主要從以下幾個方面綜合考慮 時間複雜度 空間複雜度 演算法穩定性 演算法簡單性 待排序記錄數 n的大小 記錄本身的資訊量等。選擇n 個整數組成一些隨機排序,各種內部排序方法的實際時間如圖 7 10 所示。從時間複雜度看,所有...