您将获得一个已从文件中读取的100个整数的列表。如果所有值都为零,那么选择排序算法的运行时间(以O符号表示)将是什么。
我认为它是O(n),因为选择排序从最左边的数字开始作为排序的一面。然后它通过数组的其余部分找到最小的数字并用排序的第一个数字交换它。但由于它们都是零,所以它不会交换任何数字(或者我认为)。
我的老师说它是O(n ^ 2)。谁能解释为什么?
答案 0 :(得分:1)
选择排序不是自适应的。每个元素将始终与其他元素进行比较(将n个元素与n个其他元素进行比较→n ^ 2个比较)。因此,选择排序总是具有O(n ^ 2)个比较。但是,它有O(n)掉期。
考虑一个包含n行和n列的表格,每个单元格都需要进行比较以填充值(对角线除外)。