#include <iostream>



#include <string>



using namespace std;






//交换子函数



void Swap(int* a,int* b)



{


int temp;


temp=*a;


*a=*b;


*b=temp;



}



//循环不变量 从头开始 时间复杂度为O(n)



void change(int* a,int p,int q)



{


int i=p-1;




for(int j=p;j<=q;j++)


{


if(a[j]%2==1)


{


i=i+1;


Swap(&a[i],&a[j]);


}


}



}


时间复杂度为O(n)



void change2(int* a,int p,int q)



{


int i=p,j=q;




while(i<j)


{


while(a[i]%2==1)i++;


while(a[j]%2==0)j--;


Swap(&a[i],&a[j]);


}



}



int main()



{


//给定一个数组,奇数全排在前面,偶数全排在后面


int arr[10]={1,2,3,4,5,6,7,8,9,10};


change(arr,0,9);




for(int i=0;i<10;i++)


{


cout<<arr[i]<<" ";


}




cout<<endl;


int arr2[10]={1,2,3,4,5,6,7,8,9,10};


change2(arr2,0,9);




for(i=0;i<10;i++)


{


cout<<arr2[i]<<" ";


}








return 0;



}