54.调整数组顺序使奇数位于偶数前面。
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,
所有偶数位于数组的后半部分。要求时间复杂度为 O(n)。
/* 54.调整数组顺序使奇数位于偶数前面。 题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分, 所有偶数位于数组的后半部分。要求时间复杂度为 O(n)。 */ #include<iostream> #include<stdio.h> using namespace std; void swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } void adjust(int *a,int n) { int i,j; i=0;j=0; while(i<n) { if(a[i]%2==1)//奇数交换 { swap(&a[i],&a[j]); j++; } i++; } } int main() { int a[]={1,2,3,4,5,6,7,8,9}; int b[]={1,1,3,4,6,6,6,5,5,7,8,8,9,9}; int len,i; len=sizeof(a)/sizeof(int); for(i=0;i<len;i++) printf("%d",a[i]); printf("\n"); adjust(a,len);//变换 for(i=0;i<len;i++) printf("%d",a[i]); printf("\n"); printf("*****************\n"); len=sizeof(b)/sizeof(int); for(i=0;i<len;i++) printf("%d",b[i]); printf("\n"); adjust(b,len);//变换 for(i=0;i<len;i++) printf("%d",b[i]); printf("\n"); return 0; }