題目:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分。
首先這個題目只要求把奇數放前面,偶數放後面,所以我們不需要關注其他太多的因素,我們只需要給兩個指標,讓他們乙個指向最後乙個元素,這個指標只向前移動,乙個指向第乙個元素,這個指標只向後移動,然後讓這兩個指標動起來就好了,讓前面的指標指向奇數,那麼就++,後面的指向偶數,就–,如果不滿足,就交換兩個元素就好了。聽起來是不是就是這麼輕鬆加愉快呢。
#include#includevoid sort_arr(int *p, int count)
while ((left < right) && ((*right) & 1) == 0)
if (left < right)
}}int main()
; sort_arr(arr, sizeof(arr) / sizeof(arr[0]));
for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
system("pause");
return 0;
}
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
// 不能學排序算法學傻了吧,這題不至於上各種排序演算法吧還
/*新建乙個陣列先把原陣列中的奇數push進去再把偶數push進去,
然後用新陣列資料覆蓋原陣列即可複雜度o(n)*/
class solution
for(int i = 0; i < array.size(); i++)
array = res;
}};
面試題12 調整陣列順序使奇數字於偶數前
思路 1.設定兩個指標,初始狀態第一指標指向陣列的第乙個數,第二個指標指向陣列的最後乙個數 2.若第乙個指標指向的數是奇數,則指標向右移動一位,第二個指標指向的數是偶數,則指標向左移動 3.若第乙個指標和第二個指標指向的數恰好分別為偶數和奇數,則交換數字。include stdafx.h inclu...
面試題14 調整陣列順序使奇數字於偶數前面
最簡單的辦法就是開闢和原陣列同樣大小的空間,順次掃瞄原陣列2次,第一次將所有奇數放進新陣列中,第二次將偶數放入就可以。這種方法的時間複雜度為o n 空間複雜度為o n 如下 void reorderoddeven vector arr vectornewarr int i for i 0 i以上演算...
面試題14 調整陣列順序使奇數字於偶數前面
這個題目要求把奇數放在陣列的前半部分,偶數放在陣列的後半部分,因此所有的奇數應該位於偶數的前面。也就是說我們在掃瞄這個陣列的時候,如果發現有偶數出現在奇數的前面,我們可以交換它們的順序,交換之後就符合要求了。因此我們可以維護兩個指標,第乙個指標初始化時指向陣列的第乙個數字,它只向後移動 第二個指標初...