面試100 29調(diào)整數(shù)列中的數(shù)使奇數(shù)位于偶數(shù)之前
一問(wèn)題描述:
調(diào)整順序使奇數(shù)位于偶數(shù)之前
(1) 使用兩個(gè)指針low ,high分別指向數(shù)列的首和尾,然后向中間移動(dòng)
(2) 當(dāng)low發(fā)現(xiàn)指向的元素不是奇數(shù)時(shí)停止移動(dòng)
(3) 當(dāng)high發(fā)現(xiàn)指向的元素不是偶數(shù)時(shí)停止移動(dòng)
(4)交換兩個(gè)指針?biāo)赶虻脑亍?br /> (5)當(dāng)low < high 時(shí)循環(huán)執(zhí)行
整個(gè)思路有點(diǎn)類似歸并排序,兩個(gè)有序序列調(diào)整順序的過(guò)程。
二 代碼如下:
#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 ;
}