大家好,我想问你的意见。你会建议使用什么算法来排序阵列A,其中大多数四个数字位于错误的位置并获得有效的渐近运行时间?我正在考虑插入排序,但如果最多有四个元素,还有更好的东西吗?提前致谢
答案 0 :(得分:1)
如果数组在错误的位置最多有4个元素,插入排序(使用二进制搜索实现)可以很好地完成工作,但最好的办法是获取所有错误的元素并对它们进行排序,例如
1 2 A 4 B 6 C 7
如果A,B和C错误,您可以对它们进行排序并重新分配到数组中:
1 2 C 4 A 6 B 7
并且由于只有几个元素,您可以使用它们构建一个数组并使用选择排序并将它们放回原始数组的正确位置
答案 1 :(得分:0)
考虑到数组的大小,我不认为算法的选择会产生影响。我会说快速排序。选择第二个数字作为支点并从那里开始。
答案 2 :(得分:0)