调整数组顺序使奇数位于偶数前面
来源:互联网 发布:验证身份证18位数的js 编辑:程序博客网 时间:2024/06/07 10:43
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变
题目很简单,关键是要保持奇数和奇数 偶数和偶数之间的关系不能变化,就导致我们一定要用稳定的算法,快排啥的就算没戏了,考虑到我们时间复杂度,我们决定使用归并排序的思想,这可是稳定的排序算法(common的算法)中,时间复杂度最小的 O(nlogn)。
class Solution {public: void sortaction(vector<int> &array,int from,int mid,int end) { vector<int> copy(array); int i=from; int j=mid+1; int cur=from; while( array[i]%2==1 && i<mid+1) copy[cur++]=array[i++]; while( array[j]%2==1 && j<end+1) copy[cur++]=array[j++]; while(i<mid+1) copy[cur++]=array[i++]; while(j<end+1) copy[cur++]=array[j++]; for(int i=from;i<=end;i++) array[i]=copy[i]; } void inpart(vector<int> &array,int from,int len) { if(from<len) { int mid=(from+len)/2; inpart(array,from,mid); inpart(array,mid+1,len); sortaction(array,from,mid,len); //for(int i=from;i<=len;i++) array[i]=0; } } void reOrderArray(vector<int> &array) { int len=array.size(); inpart(array,0,len-1); //for(int i=0;i<len;i++) array[i]=0; } };
0 0
- 【数组3】-调整数组顺序使奇数位于偶数前面
- 数组3:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面--总结
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面[
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使偶数位于奇数前面
- coding - 调整数组顺序使奇数位于偶数前面
- Linux学习笔记之RHEL6修改root密码
- Flask Web 开发 博客文章_5
- 《江湖X》开发笔谈——服务器技术架构
- RuntimeError 可能发生的情况
- 将构件发布到maven
- 调整数组顺序使奇数位于偶数前面
- 一个有广告的纸杯子的测试用例设计(黑盒测试用例设计)
- C#控制台基础 C#中引用类型有哪些
- 中介者模式
- Android Support Design库之AppBarLayout
- Intent和PendingIntent
- hdu 1402 A * B Problem Plus[【FFT】
- MySQL基本概念
- linux常用命令和文件操作命令