给定一个数组,奇数全排在前面,偶数全排在后面
2013-10-24 21:24
549 查看
#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;}
//交换子函数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;}
相关文章推荐
- 算法题:将一个数组中所有奇数放前面和偶数放后面(不开辟新的内存空间)
- 写一个函数,把数组里的奇数放前面。偶数放后面。比如[1, 2, 3, 4, 5],处理后得到[1, 3, 5, 2, 4]。
- 课堂提问(C语言):输入10个整数到一个数组,将奇数放在数组前面,偶数放在数组后面,然后输出整个数组。
- 笔试题3——给定一个整形数组,使得奇数在偶数前面
- 剑指offer第4题 把空格替换成20% 剑指offer第14题 让一个数组中奇数位与前面,偶数位与后面
- 将一个数组里面的奇数全部排在前面,偶数排在后面
- 4.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)
- 奇数位于偶数的前面在一个数组中
- 【每天一道算法题】给定一个存放整数的数组,要求数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
- 编程: 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 一整数数组,将奇数放在前面,偶数放在后面
- 华为:给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,如果数组长度n为偶数。。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 题目:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数---百度笔试题