实验二分治法归并排序
(班级)
姓名学号日期年月日
2、算法分析:
设待排序记录个数为n ,
该算法的基本语句是归并算法的循环体的比较语句
“if (b[i]<=b[j]) temp[k++]=b[i++];
else temp[k++]=b[j++]; ”,
其执行次数为: ,即执行一趟归并算法的时间复杂度为。
则归并排序算法存在以下推式:
所以,归并排序算法的时间复杂度为。
另外,归并排序算法递归调用次数为。
3、结果如下:
教师签名:
成绩:
n=5
n=8
(班级)
姓名学号日期年月日
由n = 5,6,…,10等数据的运行结果可知,
随着问题规模n的增加,其时间复杂度(比较次数的执行)也增加,
所以,该算法分析的判断正确。
4、与选择排序的对比(时间复杂度)
平均情况最好情况最坏情况选择排序
归并排序
从时间复杂度上看,归并排序的要小于选择排序,
并且实际上,
在问题规模相同而待排序记录顺序的整齐程度有所差异的情况下,
选择排序是不论待排序记录顺序的整齐程度如何,其时间复杂度都是固定的;
归并排序是若待排序记录顺序越整齐,其时间复杂度越小,
教师签名:
n=10
相关主题