单选题 下列排序方法中,最好情况下,时间复杂度为O(n)的算法是______。
A.选择排序 B.归并排序 C.快速排序 D.直接插入排序

【正确答案】 D
【答案解析】各种排序算法性能比较如下:
排序方法 平均时间 最好情况 最坏情况 辅助存储 稳定性
选择排序 O(n2) O(n2) O(n2) O(1) 不稳定
插入排序 O(n2) O(n) O(n2) O(1) 稳定
冒泡排序 O(n2) O(n2) O(n2) O(1) 稳定
希尔排序 O(n1.25) —— —— O(1) 不稳定
快速排序 O(nlogn) O(nlogn) O(n2) O(nlogn) 不稳定
堆排序 O(nlogn) O(nlogn) O(nlogn) O(1) 稳定
归并排序 O(nlogn) O(nlogn) O(nlogn) O(n) 稳定
基数排序 O(d(n+rd)) O(d(n+rd)) D(d(n+rd)) D(rd) 稳定