比较直接插入排序、起泡排序、简单选择排序、快速排序、堆排序、2一路归并排序和基数排序的算法性能,并填写下表:
【正确答案】 A
【答案解析】解析:1.按平均的时间性能来分,有3类排序方法: 1)时间复杂度为O(niogn)的方法有:快速排序、堆排序和归并排序。其中快速排序目前被认为是最快的一种排序方法,后两者之比较,在n值较大的情况下,归并排序较堆排序更快。 2)时间复杂度为O(n 2 )的有:插入排序、起泡排序和选择排序。其中以插入排序为最常用,特别是对于已按关键字基本有序排列的记录序列尤为如此,选择排序过程中记录移动次数最少。 3)时间复杂度为O(n)的排序方法只有基数排序一种。 ●当待排记录序列按关键字顺序有序时,插入排序和起泡排序能达到O(n)的时间复杂 度;而对于快速排序而言,这是最不好的情况,此时的时间性能蜕化为O(n 2 ),因此应尽量避免。 ●选择排序、堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。 ●以上对排序的时间复杂度的讨论主要考虑排序过程中所需进行的关键字之间的比较次数。当待排序记录中其他各数据项比关键字占有更大的数据量时,还应考虑到排序过程中移动记录的操作时间,有时这种操作的时间在整个排序过程中占的比例更大,从这个观点考虑,简单排序的3种排序方法中起泡排序效率最低。 2.按排序过程中所需的辅助空间大小来分。 1)所有的简单排序方法(包括;插入、起泡和选择排序)和堆排序的空间复杂度均为 O(1)。 2)快速排序为O(nlogn),为递归程序执行过程中栈所需的辅助空间。 3)归并排序和基数排序所需辅助空间最多,其空间复杂度为O(n)。
【正确答案】 A
【答案解析】
【正确答案】 B
【答案解析】
【正确答案】 C
【答案解析】
【正确答案】 A
【答案解析】
【正确答案】 A
【答案解析】
【正确答案】 B
【答案解析】
【正确答案】 C
【答案解析】
【正确答案】 A
【答案解析】
【正确答案】 A
【答案解析】
【正确答案】 A
【答案解析】
【正确答案】 C
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 A
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 C
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 D
【答案解析】
【正确答案】 B
【答案解析】
【正确答案】 E
【答案解析】
【正确答案】 E
【答案解析】
【正确答案】 E
【答案解析】
【正确答案】 B
【答案解析】