我需要找到一个高度优化的算法来排序一个只包含0 n 1的数组.
我的解决方案版本是计算编号.零(比如说x)和(比如说y).完成后,在数组中放置x零,然后输入y 1s.这使它成为O(n).
任何运行比这更好的算法??? 我在面试中被问到这个问题.
小智 7
我们不能比O(n)做得更好,但看起来我们可以一次完成
low = 0;
high = arr.length - 1;
while (low < high) {
while (arr[low] == 0) {
low ++;
}
while (arr[high] == 1) {
high --;
}
if (low < high) {
//swap arr[low], arr[high]
}
}
Run Code Online (Sandbox Code Playgroud)