-2

私の課題で質問があります:

要素がすべて 0 (ゼロ) または 1 (1) である並べ替えられていない配列が与えられた場合、すべての 0 が最初に表示され、次にすべての 1 が表示されるように配列を並べ替えるコードを記述します。「num_elements」は常に配列内の要素の数を正確に示していると思われるかもしれません。次の関数ヘッダーを使用してください。

void sort_elements(int array[], int num_elements);

彼が何を意味しているのか、私には本当にわかりません.2つのアレイが必要なのか、それとも1つだけなのか. 私に説明してください。

私はそれをしました:DIは自分自身を信じることができません..私は2つのforループと2つのifを使用しました..皆さんの支援に感謝します<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]);
            }
        }



    }
}
4

3 に答える 3

3

1) 2 つのポインターを左右に維持します。
2) 1 に遭遇するまで、左ポインタを右方向にトラバースし始めます。
3) 0 に遭遇するまで、左に向かって右ポインタを開始します。
4) 配列 [左] = 0、配列 [右] = 1 を設定
します。 5) 左右のポインターが収束するまでこれを続けます。
6) 配列を 1 回だけトラバースする必要があるため、ソートは O(n) 時間で行われます。

于 2012-12-11T22:16:15.620 に答える
0

これを実装する場合、必要な行は1行だけです。

Arrays.sort(array);
于 2012-12-11T22:18:09.523 に答える
0

問題のステートメントから、関数がその場でソートされることが期待されていることは明らかarrayです。

これを実際に実装するには、sort のカウントを読んでください。

于 2012-12-11T22:15:40.807 に答える