タイトル説明:
例えば、アレイの全ての偶数後半が配置されているアレイの前半のすべての奇数の一部が配置されていることを、アレイ内の数字の順序を調整する機能を実現するために、整数の配列を入力し、偶数偶数との間に、それは、奇数および偶数確保します同じ相対的な位置。例えば、指定された配列{2,4,6,3,5}、配列{3,5,2,4,6}が調整されています
考えました:
最も簡単なアイデアは、配列のサイズは、元の大きさ、時間のためのスペースを使用することで、新しい配列を作成することです。
/ * *配列開くには、次の時間のためのスペース 元の配列、およびインデックスレコードに奇数の頭部に配置されている場合、アレイを通して* 1 * 2偶数のインデックスを記録し、新たな配列に配置されている場合 * 3.二つの配列を組み合わせ、最後偶奇から挿入されている * / パブリック 静的 ボイド reOrderArray(INT []配列){ IF(配列== NULL || Array.lengthと== 0である) リターン; INT indexOdd = 0、indexEven 0 = ; int型 [] =も新しい新しい intは、[Array.lengthとである]; //が偶数配列保存 のための(int型NUM:配列){ IF(。。(&NUM 1)== 1){ //もし奇数の 配列[indexOdd ++] = NUM; } 他 { // も、さ も[indexEven ++] = NUMは; } } // 配列をマージ するための(INT ; I <indexEven I ++はI = 0 {) 配列[indexOdd + I ] = さえ[I]; } }
2考えます:
ソート偶奇、奇数前進の相対位置を変えることなく、思考を挿入することにより
/ * *挿入配列決定法 * / パブリック 静的 ボイド reOrderArray_2(INT []配列){ IF(配列== NULL || Array.lengthと== 0である) のリターン; int型をI、J、tempNum; のための(I = 1、I <Array.lengthとすること; Iは++ ){ がiF。(。(配列[I]&1)== 1){ // 場合奇数 =配列[I] tempNum; //は比較の数格納 J = -I 1。; 一方( J> = 0 &&(配列[J]&1)== 0){ // 現在の数が偶数、奇数を前方に移動させたとき アレイ[J + 1] =アレイ[J]。 J - ; } 配列[j個 +1] = tempNum。 } } }