// OddEvenArray.cpp : Defines the entry point for the console application. // Created by: Xianyi.Ye, August 1st,2010 // Question: // Code a program that make all the odd numbers precede all the even numbers. // Solution: // 1. Set two pointers, 'START' and 'END' respectively. // 'START' points to the first number of array; 'END' points to the last number of array. // 2. Start to traverse the array. // 3. While the travel is going on, if 'START' points to a odd number, it will move to next // position(START+1). In addition, the travel will continue. // 4. While the travel is going on, if 'END' points to a even number, it will move to next // position(END-1). In addition, the travel will continue. // 5. While the travel is going on, if 'START' and 'END' point to a even number and a odd number // respectively, we will exchange these two values. // 6. The travel will be stopped if 'START' beyonds 'END'. #include "stdafx.h" #include <iostream.h> void adjustArray(int num[], int len) { int start = 0 ; int end = len-1 ; while(start<end) { if((num[start]&1)!=0) // num[end] is a odd number { start++ ; continue ; } if((num[end]&1)==0) // num[end] is a even number { end-- ; continue ; } int temp = num[end] ; num[end] = num[start] ; num[start] = temp ; } } int main(int argc, char* argv[]) { int num[10] = {1,2,3,4,5,6,7,8,9,10} ; adjustArray(num , 10) ; for(int i=0 ; i<10 ; i++) { cout<<num[i]<<" " ; } return 0; }