您好,登錄后才能下訂單哦!
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有奇數位于數組的前半部分,所有偶數位于數組的后半部分。
首先,可以想到,用前后兩個指針一個在數組首一個在數組尾同時往數組中間遍歷,當遇到前指針遇到偶數后指針遇到奇數時,就將兩個數交換,直到兩指針相遇或者前指針超過了后指針,這個有點類似快速排序的思想;
程序設計如下:
#include <iostream> #include <assert.h> using namespace std; void AdjustArr(int *parr, size_t size) //調整數組 { assert(parr && size); int *start = parr; int *end = parr+size-1; while(start < end) { while((start < end)&&((*start % 2) != 0))//當start指針遇到偶數停止 ++start; while((start < end)&&((*end % 2) == 0)) //當end指針遇到奇數停止 --end; if(start < end)//判斷start和end位置 { swap(*start, *end); ++start; --end; } else return; } } void PrintArr(int *parr, size_t size) //打印數組 { assert(parr && size); for(size_t i = 0; i < size; ++i) { cout<<parr[i]<<" "; } cout<<endl; } int main() { int arr[] = {1,5,2,4,6,11,3,8,0,7}; size_t size = sizeof(arr)/sizeof(arr[0]); PrintArr(arr, size); AdjustArr(arr, size); PrintArr(arr, size); return 0; }
運行程序,結果:
《完》
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。