如果我们需要实现一个取整数数组并返回集合中最大整数的函数,假设数组的长度小于1000.您会使用冒泡排序或合并排序吗?为什么?
此外,如果数组长度大于1000,上述算法选择会发生什么?我对为什么我应该使用特定算法而不是另一个算法有点困惑。是仅仅因为其复杂性和时间或其他因素也参与其中?如果我必须测试上面的函数,并且需要花费更多的时间来处理简单的算法而花费更少的时间来复杂的算法呢?
答案 0 :(得分:18)
我根本不会这样。我只是遍历阵列并跟踪最大的阵列。这需要O(N)时间,而排序算法通常不会比O(N * log(N))做得更好。
答案 1 :(得分:3)
答案 2 :(得分:2)
如果你必须排序,那么使用合并排序,因为它比冒泡排序快得多。对于1000个元素和单个排序,您可能不会注意到现代计算机上的差异,但是对于更多元素(我想> = 10 000),差异变得难以理解。
答案 3 :(得分:0)
让我们调用数组N的长度。
使用冒泡排序对数组进行排序大致采用N * N个时间单位的顺序。
使用Merge Sort对其进行排序采用N * log N个时间单位的顺序。
只需逐个查看每个元素,并跟踪哪个元素最大,将按照N个单位的顺序进行。
因此,请使用最后一种方法。