面試100 29調整數列中的數使奇數位于偶數之前
一問題描述:
調整順序使奇數位于偶數之前
(1) 使用兩個指針low ,high分別指向數列的首和尾,然后向中間移動
(2) 當low發現指向的元素不是奇數時停止移動
(3) 當high發現指向的元素不是偶數時停止移動
(4)交換兩個指針所指向的元素。
(5)當low < high 時循環執行
整個思路有點類似歸并排序,兩個有序序列調整順序的過程。
二 代碼如下:
#include <iostream>
using namespace std ;
void judge(int * a , int low , int high)

{
if(!a)
return ;
while(low < high)

{
while(low < high && (a[low]& 1) ==1) low++ ;
while(low < high && (a[high] & 1) ==0) high-- ;
if(low < high)
swap(a[low] , a[high]) ;
}
}
int main()

{

int a[]=
{4 , 7, 4 ,3 ,6 ,1 ,5} ;
judge(a , 0 , 6) ;
for(int i = 0 ; i < 7 ;i++)
cout<<a[i]<<" " ;
system("pause") ;
return 0 ;
}