C++ 排序算法比较次数分析 - 直接插入、折半插入、Shell、选择、冒泡、快速、基数、归并
由于不知道具体数据的规模和排序算法的实现细节,无法给出完整的代码。但是可以给出每种排序算法的比较次数计算公式,供参考。
-
直接插入排序比较次数: 最好情况:n-1 最坏情况:1+2+...+(n-1)=n*(n-1)/2 平均情况:n*(n-1)/4
-
折半插入排序比较次数: 最好情况:n-1 最坏情况:log2(n)+n-2 平均情况:1/4*(n^2-n+4*log2(n)-4)
-
Shell排序比较次数: 最好情况:n-1 最坏情况:n*(log2(n))^2 平均情况:未知
-
直接选择排序比较次数: 最好情况:n-1 最坏情况:1+2+...+(n-1)=n*(n-1)/2 平均情况:n*(n-1)/4
-
树形选择排序比较次数: 最好情况:n-1 最坏情况:2nlog2(n)-2n+1 平均情况:nlog2(n)-n+1
-
冒泡排序比较次数: 最好情况:n-1 最坏情况:1+2+...+(n-1)=n*(n-1)/2 平均情况:n*(n-1)/4
-
快速排序比较次数: 最好情况:nlog2(n) 最坏情况:1+2+...+(n-1)=n(n-1)/2 平均情况:2nlog2(n)
-
基数排序比较次数: 最好情况:nd 最坏情况:nd 平均情况:n*d
-
归并排序比较次数: 最好情况:nlog2(n) 最坏情况:nlog2(n) 平均情况:n*log2(n)
其中,n为待排序数据的个数,d为数据的位数。
原文地址: https://www.cveoy.top/t/topic/nA4K 著作权归作者所有。请勿转载和采集!