面試題21 調整陣列順序使奇數字於偶數前面

2021-10-08 10:56:53 字數 1612 閱讀 8517

【 題目:】

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。

【i/o描述】

void

test1()

;test

("test1"

, numbers,

sizeof

(numbers)

/sizeof

(int))

;}void

test2()

;test

("test2"

, numbers,

sizeof

(numbers)

/sizeof

(int))

;}void

test3()

;test

("test3"

, numbers,

sizeof

(numbers)

/sizeof

(int))

;}void

test4()

;test

("test4"

, numbers,

sizeof

(numbers)

/sizeof

(int))

;}void

test5()

;test

("test5"

, numbers,

sizeof

(numbers)

/sizeof

(int))

;}void

test6()

【**】

#include

//#include

#include

#include

//#include

using

namespace std;

void

reorder

(int

* data,

int length,

bool

(*func)

(int))

int* lft = data;

int* rt = data + length -1;

while

(lftwhile

(lftfunc

(*rt))if

(lftbool

iseven

(int n)

void

reorderoddeven

(int

*data,

int length)

intmain()

;for

(int a : numbers)

cout << endl;

reorderoddeven

( numbers,

sizeof

(numbers)

/sizeof

(int))

;for

(int a:numbers)

cout << endl;

return0;

}/****

***/

面試題21 調整陣列順序使奇數字於偶數前面

題目 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。示例 輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案之一。1 nums.length 50000 1 nums i 10000 解題思路...

面試題21 調整陣列順序使奇數字於偶數前面

題目 解題思路 三種方法,暴力解法,首尾雙指標,快慢指標法。第一種暴力解法,通過引入乙個新的陣列用於記錄,從頭開始遍歷整個陣列,奇數從新陣列的開始為存入,偶數從最後一位開始存入,此方法時間和空間複雜度都是o n 演算法效率不是最優。第二種首尾雙指標法,演算法過程 第三種快慢指標法,顧名思義就是通過兩...

面試題21 調整陣列順序使奇數字於偶數前面

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。示例 輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案之一。這應該是最直觀的思路了,即建立兩個列表,之後遍歷nums,所有奇數放入乙個列表,所有...