陣列 奇數偶數排序

2021-07-11 20:52:31 字數 980 閱讀 9699

題目描述:

給定乙個int型陣列,要求將陣列排序使得奇數都在偶數前面。

分析:

在快速排序過程中,有乙個步驟是:選定樞軸元素,並使得樞軸元素前面的元素都小於它而後面的元素都大於它。我們可以比照此方法來實現題目要求,此時時間複雜強度僅為o(n)。

實現1:

使用兩個指標一頭一尾向中間掃瞄。

#include 

using

namespace

std;

bool isoddnumber(int data);

void oddevensort(int *arr, int length);

int main()

; oddevensort(array, sizeof(array)/sizeof(int));

cout

<< "after sort: "

<< endl;

for(int i = 0; i < sizeof(array)/sizeof(int); i++)

cout

<< endl;

return0;}

bool isoddnumber(int data)

void oddevensort(int *arr, int length)

else

}}

實現2:

兩個指標 i 和 j 都從頭開始掃瞄,初始時 j 指向陣列頭,而 i 指向 j 的前乙個位置。每次先判斷 *j 是不是奇數,若是則 i += 1 並且 swap(*i, *j)。直到 j 指向倒數第二個元素為止。最後swap(arr[i + 1], arr[last])。

void oddevensort2(int

*arr, int first, int

last)

}swap(arr[i + 1], arr[last]);

}

陣列奇偶數排序

給定乙個陣列input 如果陣列長度n為奇數,則將陣列中最大的元素放到 output 陣列最中間的位置,如果陣列長度n為偶數,則將陣列中最大的元素放到 output 陣列中間兩個位置偏右的那個位置上,然後再按從大到小的順序,依次在第乙個位置的兩邊,按照一左一右的順序,依次存放剩下的數。例如 inpu...

奇偶數排序

輸入10個整數,彼此以空格分隔。重新排序以後輸出 也按空格分隔 要求 1.先輸出其中的奇數,並按從大到小排列 2.然後輸出其中的偶數,並按從小到大排列。任意排序的10個整數 0 100 彼此以空格分隔。可能有多組測試資料,對於每組資料,按照要求排序後輸出,由空格分隔。測試資料可能有很多組,請使用wh...

陣列排序,奇數在前偶數在後

乙個長度為len的int陣列中,每個單元儲存的都是乙個隨機數,現要求將所有的奇數排到陣列前面,並為公升序 所有的偶數排到陣列後面,並為降序,不能開闢新的臨時記憶體空間。發信人 manmounth vacuum 信區 cplusplus 標 題 re 請教乙個筆試題目 發信站 水木社群 sat oct...