我的任务中有疑问说:
给定一个未排序的数组,其元素全部为0(零)或1(1), 编写代码对数组进行排序,使所有的0首先出现,然后是所有的1。 您可以假设'num_elements'始终准确地指示元素的数量 在数组中。 请使用以下函数标题:
void sort_elements(int array[], int num_elements);
我做到了:D我无法相信自己,我使用2 for for循环,如果在其中2 ..谢谢你们所有人的帮助< 3< 3
public class Q4 {
public static void main (String []args){
int Sky[]={0,0,1,1,0,1};
sort_elements(Sky,Sky.length);
}
public static void sort_elements(int array[],int num_elements){
for ( int i=0; i < num_elements ; i++){
if ( array[i]==0){
System.out.println(array[i]);
}
}
for ( int i=0; i<num_elements ; i++){
if ( array[i]==1){
System.out.println(array[i]);
}
}
}
}
答案 0 :(得分:3)
1)左右两个指针
2)开始向左移动左指针直到遇到1
3)向左开始向右指针,直到遇到0
4)设置数组[left] = 0,数组[right] = 1
5)继续这样做,直到左右指针收敛为止
6)因为,我们只需要遍历数组一次,在O(n)时间内进行排序。
答案 1 :(得分:0)
从问题陈述中可以清楚地看出,您的函数应该对array
进行排序。
至于实际执行此操作,请阅读counting sort。
答案 2 :(得分:0)
如果我实现这一点,我只需要一行:
Arrays.sort(array);