调整数组顺序使奇数位于偶数前面
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。
思路:不考虑奇数与偶数的数字相对顺序的话,可以实现O(n)的时间复杂度,O(1)的空间复杂度
1 void AdjustArr(int *arr, int length) 2 { 3 if(length==0 || arr==NULL)return; 4 int m=0; 5 int n=length-1; 6 while(m<n) 7 { 8 while(m<n && (arr[m] & 0x1))++m; 9 while(m<n && !(arr[n] & 0x1))--n; 10 if(m<n) 11 { 12 int tmp=arr[m]; 13 arr[m]=arr[n]; 14 arr[n]=tmp; 15 } 16 } 17 }