そのよう偶奇の前にアレイの順序を調整する[ウシオファーオフ安全性を証明します]

リンクします。https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593

タイトル:全ての偶数アレイの第2の半分に位置し、間の奇数と奇数-偶数と偶数ことを確実にするために、そのようなアレイの前半のすべての奇数一部こと、アレイ内の数字の順序を調整する機能を実現するために、整数の配列を入力し相対位置変わらず。

 

アイデア:スペースのための時間、偶数保存の配列で開かれたが、元の配列の末尾に元の配列、一時配列に格納偶数と左に奇数移動し、最終的にも、一時的な配列をスキャンします。

 

例えば

ソースアレイ{3,4,5,7,8,2,9}

初めはこれです:

左から右へスキャン、最初の数は3で、奇数は、(実際に代えて)、挿入ポインタに3を入れ、そして右へ、その後、挿入ポインタが移動するように、スキャンポインタはまた、右に移動させます。

そう:

 

今4へのスキャン、一時配列、およびスキャンポインタ前方に入れて、偶数です。

 そう:

 

5について、走査される5に挿入ポインタを置き、右にカーソルポインタを移動し、奇数であり、スキャンポインタはまた、右に移動させます。

そう:

7スキャン、奇数であり、7で挿入ポインタを置き、右にカーソルポインタを移動し、スキャンポインタはまた、右に移動させます。

そう:

今8をスキャンし、一時配列、およびスキャンポインタ前方に入れて、偶数です。

そう:

そして:

最後に:

これまでのところ、左側は奇数を完了したとさえ選出されました。

元の配列にしても、一時的な配列の隣にすることができます。

 

コード

 1 /**
 2  * @author yuan
 3  * @version 0.1
 4  * @date 2019/6/6
 5  */
 6 public class ReOrderArray {
 7 
 8     public static void print(int[] array) {
 9         for (int i = 0; i < array.length; i++) {
10             System.out.print(array[i]);
11             if (i == array.length - 1) {
12                 System.out.println();
13             } else {
14                 System.out.print(" ");
15             }
16         }
17     }
18 
19     public static void reOrderArray(int[] array) {
20         // 保存偶数
21         int[] temp = new int[array.length];
22         // 当前偶数数量
23         int count = 0;
24         // 当前填入位置,第一轮for循环用于奇数左移,第二轮用于填入偶数
25         int pos = 0;
26         for (int i = 0; i < array.length; i++) {
27             if ((array[i] & 1) == 0) {
28                 temp[count++] = array[i];
29             } else {
30                 array[pos++] = array[i];
31             }
32         }
33         for (int i = 0; i < count; i++) {
34             array[pos++] = temp[i];
35         }
36     }
37 
38     public static void main(String[] args) {
39         int[] array = new int[]{3, 4, 5, 7, 8, 2, 9};
40         print(array);
41         reOrderArray(array);
42         print(array);
43     }
44 }

 

おすすめ

転載: www.cnblogs.com/null-0/p/10988709.html