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/cUdG 著作权归作者所有。请勿转载和采集!