2.27专项测试补题

  • 总排序趟数与初始状态无关的有:(除了快速排序和优化的冒泡,其他都是)

  • 算法复杂度与初始状态无关的有:堆排序、归并排序、选择排序、基数排序。

  • 元素总比较次数与初始状态无关的有:选择排序、基数排序。

  • 元素总移动次数与初始状态无关的有:归并排序、基数排序。

  • 快速排序的最坏情形是数组为正序或逆序,如果pos总是选择第一个元素,那么每次划分只得到一个比上一次划分少一个记录的子序列,此时需要执行次递归调用。显然,采用A(划分元素为三者居中),能够将每次待排序的pos尽可能一分为二,从而使得递归深度为log(2,n),即空间复杂度为O(log(2,n))。

  • 排序时,若不采用计数排序的等空间换时间的方法,合并m个长度为n的已排序数组的时间复杂度最优为(O(mn(logm))

    解析:当n=1时,就成了m个数的归并排序,时间复杂度为O(mlogm)

  • 在最好情况下,下列排序算法中() 排序算法所需比较关键字次数最少。
    A. 冒泡排序
    B. 直接插入排序
    C. 快速排序
    D. 归并排序

    解析:冒泡注意加flag可以在无交换时一次退出,最优O(N),比较N-1次;直插法在原数组有序时也只比较N-1次
    答案:AB

  • 采用递归方式对顺序表进行快速排序。下列关于递归次数的叙述中,正确的是()。
    A. 递归次数与初始数据的排列次序无关
    B. 每次划分后,先处理较长的分区可以减少递归次数
    C. 每次划分后,先处理较短的分区可以减少递归次数
    D. 递归次数与每次划分后得到的分区的处理顺序无关

    解析:快速排序的递归次数与分区处理顺序无关,即先处理较长的分区或先处理较短的分区都不影响递归次数。
    答案:D

猜你喜欢

转载自www.cnblogs.com/l999q/p/12372466.html