83.第 3 组百度面试题
1.今年百度的一道题目
百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要求:空间复杂度 O(1),时间复杂度为 O(n)。
/* 83.第 3 组百度面试题 1.今年百度的一道题目 百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度 O(1),时间复杂度为 O(n)。 与54题相同 使改变数组顺序 使奇数位于偶数前面 */ #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; }