在最坏的情况下,使用选择排序对n个元素进行排序所需的交换次数是多少?
(一种) (n)
(B) (n记录n)
(C) (n ^ 2)
(D) (n ^ 2 log n)
(A) θ(n)
(B) Theta(nLogn)
(C) θ(n * n)
(D) Theta(n * nLogn)答案: (A)
说明:这是用于按升序排序的选择排序算法。
1. Find the minimum value in the list
2. Swap it with the value in the first position
3. Repeat the steps above for the remainder of the list (starting at
the second position and advancing each time)
从算法中可以看出,选择排序仅在找到当前选取元素的适当位置后才执行交换。因此,在选择排序中执行了O(n)个交换。
因为交换需要写入数组,所以如果对内存的写入比读取要昂贵得多,则选择排序是更可取的。如果物品很大但钥匙很小,通常就是这种情况。写入时间至关重要的另一个示例是存储在EEPROM或闪存中的阵列。没有其他算法可以减少数据移动。
参考:
http://en.wikipedia.org/wiki/Selection_sort
这个问题的测验