如果我在数组中有1个核心整数元素,其随机方式只有0,1。 &安培;我想在不使用现有算法的情况下对此数组进行排序或排序方法,并使用最小的迭代。
我怎么能这样做.. 请帮帮我。
答案 0 :(得分:0)
方法1:计算所有0'然后从前面设置它,然后设置1的大小 - 计数(0)次。
方法2:从数组的两端开始,然后从左边的0s到右边的0s交换,直到到达数组的中间。
while (begin < end) {
// If find 0 at left, keep moving
if (0 == toSort[begin]) {
begin++;
}
// if a 1 occurs at left, move from right until find a zero
else if (1 == toSort[end]) {
end--;
}
// Here we found a 1 at left and 0 at right, so swap
else {
toSort[begin] = 0;
toSort[end] = 1;
}
}
时间复杂度:O(n)。
答案 1 :(得分:0)
也许你可以计算0和1的数量并创建一个具有相同数量的0和1的新数组,但是选择你添加它们的顺序。