📜  门| GATE-CS-2009 |问题 10

📅  最后修改于: 2021-09-24 06:20:19             🧑  作者: Mango

在最坏的情况下,使用选择排序对 n 个元素进行排序所需的交换次数是多少?
(一种) \theta (n)
(二) \theta (n log n)
(C) \theta (n^2 )
(四) \theta (n^2 log n)
(A) θ(n)
(B) Theta(nLogn)
(C) θ(n*n)
(D) Theta(n*nLogn)答案:(一)
说明:这里是按升序排序的选择排序算法。

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
这个问题的测验