2015-11-07 54 views
-1

給定一個整數數組,對數組進行排序,以便數組的第一部分由奇數組成按升序排列,陣列的第二部分由偶數降序組成
例如, 輸入:5,3,6,8,1,7,2 輸出:1,3,5,7,8 ,6,2一個整數數組,數組的第一部分由奇數的升序組成,第二部分的偶數由大到小的順序排列

提前感謝!(JAVA)

+0

StackOverflow是不是一個地方讓人們做你的功課。 – Han

+0

你甚至都不知道你正在使用的語言。如果你想使用Python,請記住排序函數接受一個鍵作爲按照任意順序排序的參數。 –

回答

1

這可以在O(nlogn)完成。首先用O(nlogn)中的任何排序算法對整個數組進行排序。所以你得到1 2 3 5 6 7 8

創建一個新的數組。然後從第一個元素開始穿過數組。如果它奇怪的地方在陣列的開始,如果它是偶然然後把它放在最後:

int i = 0, j = n - 1; 

for(int k = 0; k < n; k++) 
{ 
    if(oldarray[k] % 2 == 1) 
     newarray[i++] = oldarray[k]; 
    else 
     newarray[j--] = oldarray[k]; 
} 
相關問題