排序复杂数组

时间:2012-12-11 22:12:17

标签: java arrays function sorting

我的任务中有疑问说:

  

给定一个未排序的数组,其元素全部为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]);
            }
        }



    }
}

3 个答案:

答案 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);