【问题标题】:Big(0) running time for selection sort选择排序的大(0)运行时间
【发布时间】:2013-05-19 17:52:27
【问题描述】:

你会得到一个从文件中读取的 100 个整数的列表。如果所有值都为零,那么选择排序算法的运行时间(以 O 表示法表示)是多少。

我认为它是 O(n),因为选择排序从最左边的数字作为排序侧开始。然后它遍历数组的其余部分以找到最小的数字并将其与排序侧的第一个数字交换。但是因为它们都是零,所以它不会交换任何数字(或者我认为)。

我的老师说是O(n^2)。谁能解释一下为什么?

【问题讨论】:

  • 即使它不交换,它仍然必须搜索所有内容以找到最小的数字。然后它必须搜索 n-1 个项目,然后是 n-2 个等,总共 O(n^2)。

标签: performance sorting selection


【解决方案1】:

选择排序不是自适应的。每个元素将始终与其他元素进行比较(将 n 个元素与 n 个其他元素进行比较 → n^2 次比较)。因此,选择排序总是有 O(n^2) 比较。但是,它有 O(n) 次交换。

想象一个有 n 行 n 列的表格,每个单元格都需要一个比较来填充值(对角线除外)。

More info on this amazing website

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2021-04-08
    • 1970-01-01
    • 2019-10-19
    • 2015-01-28
    相关资源
    最近更新 更多