jake1036

面试100 29调整数列中数使奇数位于偶数之前

            面试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 , 74 ,3 ,6 ,1 ,5} ;
   judge(a , 
0 , 6) ;
   
for(int i = 0 ; i < 7 ;i++)
     cout
<<a[i]<<" " ;
   
   system(
"pause") ;
   
return 0 ;
       
 }

   

posted on 2011-05-20 10:29 kahn 阅读(196) 评论(0)  编辑 收藏 引用 所属分类: 算法相关


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理