diff --git a/桶排序.cpp b/桶排序.cpp index 1626320..ae193e5 100644 --- a/桶排序.cpp +++ b/桶排序.cpp @@ -46,4 +46,18 @@ int main() int raw[] = { 49,38,65,97,76,13,27,49 }; int size = sizeof(raw) / sizeof(int); bucket_sort(raw, size, 10); -} \ No newline at end of file +} + +/*三、桶排序算法特点 +1.时间复杂度 +桶排序算法遍历了2次原始数组,运算量为2N,最后,遍历桶输出排序结果的运算量为N,初始化桶的运算量为M。 + +对桶进行排序,不同的排序算法算法复杂度不同,冒泡排序算法复杂度为O(N^2),堆排序、归并排序算法复杂度为O(NlogN),我们以排序算法复杂度为O(NlogN)进行计算,运算量为N/M*log(N/M)*M + +最终的运算量为3N+M+N/M*log(N/M)*M,即3N+M+N(logN-logM),去掉系数,时间复杂度为O(N+M+N(logN-logM)) + +2.空间复杂度 +桶排序算法排序过程中新建了一个桶和一个输出数组,所以算法的空间复杂度是O(N+M) + +3.稳定性 +桶排序算法在对每个桶进行排序时,选择稳定的排序算法,则排序后,相同元素的位置不会发生改变,所以桶排序算法是一种稳定的排序算法*/