给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数---百度笔试题
2013-05-26 20:55
806 查看
题目:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要求:空间复杂度O(1),时间复杂度为O(n)。
我自己写了一下(之前写的那个不对,现在重写了,时间复杂度达到O(n)
)
以下是测试代码
测试2:(第一个数为偶数)
注:因为题目未要求排序,所以结果看起来可能比较别扭
要求:空间复杂度O(1),时间复杂度为O(n)。
我自己写了一下(之前写的那个不对,现在重写了,时间复杂度达到O(n)
)
voidswap(int*a,inti,intj) { inttmp; tmp=a[i]; a[i]=a[j]; a[j]=tmp; } voidAdustArray(int*a,intn) { inti=0,j=n-1; while(i<j) { if(a[i]%2==0&&a[j]%2!=0)//左偶右奇,直接交换,进入下一次循环 { swap(a,i,j); i++; j--; } elseif(a[i]%2==0&&a[j]%2==0)//左右都是偶数,右边数不交换,而是j--,判断前一个数 j--; elseif(a[i]%2!=0&&a[j]%2!=0)//左右都是奇数,左边数不加换,i++,判断下一个数 i++; else { i++; j++; } } }
以下是测试代码
voidmain() { inta[10]={1,2,3,4,5,6,7,8,9,0}; AdustArray(a,10); for(inti=0;i<10;i++) cout<<a[i]<<''; cout<<endl; }
测试1:(第一个数为奇数)
测试2:(第一个数为偶数)
注:因为题目未要求排序,所以结果看起来可能比较别扭
相关文章推荐
- 百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 编程: 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 题目:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 4.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 给定一个整数数组,重新排列数组使其左边奇数,右边偶数
- 【每天一道算法题】给定一个存放整数的数组,要求数组左边为奇数,右边为偶数
- 160 重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个整数数组,通过变换使得数组的左边为奇右边为偶数!
- 重新排列数组使得左边为奇数,右边为偶数
- 重新排列数组,使得数组左边的数字为奇数,数组右边的数字为偶数