调整数组顺序使奇数位于偶数前面――14
2016-05-09 22:37
537 查看
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
首先,可以想到,用前后两个指针一个在数组首一个在数组尾同时往数组中间遍历,当遇到前指针遇到偶数后指针遇到奇数时,就将两个数交换,直到两指针相遇或者前指针超过了后指针,这个有点类似快速排序的思想;
程序设计如下:
运行程序,结果:
《完》
本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1771627
首先,可以想到,用前后两个指针一个在数组首一个在数组尾同时往数组中间遍历,当遇到前指针遇到偶数后指针遇到奇数时,就将两个数交换,直到两指针相遇或者前指针超过了后指针,这个有点类似快速排序的思想;
程序设计如下:
#include <iostream> #include <assert.h> using namespace std; void AdjustArr(int *parr, size_t size) //调整数组 { assert(parr && size); int *start = parr; int *end = parr+size-1; while(start < end) { while((start < end)&&((*start % 2) != 0))//当start指针遇到偶数停止 ++start; while((start < end)&&((*end % 2) == 0)) //当end指针遇到奇数停止 --end; if(start < end)//判断start和end位置 { swap(*start, *end); ++start; --end; } else return; } } void PrintArr(int *parr, size_t size) //打印数组 { assert(parr && size); for(size_t i = 0; i < size; ++i) { cout<<parr[i]<<" "; } cout<<endl; } int main() { int arr[] = {1,5,2,4,6,11,3,8,0,7}; size_t size = sizeof(arr)/sizeof(arr[0]); PrintArr(arr, size); AdjustArr(arr, size); PrintArr(arr, size); return 0; }
运行程序,结果:
《完》
本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1771627
相关文章推荐
- LR mmdrv.exe进程、线程与Vuser数量、所占内存的关系
- CodeForces - 670C Cinema (map&模拟)水
- 离职了,写点什么吧~
- android之interpolator的用法详解
- 将多个文本文件内的数据导入到Datagridview
- 输出螺旋矩阵
- CentOS6.8 upgrade gcc to gcc4.8
- Quartz.NET c# 教程 - 课程二:Jobs 和 Triggers
- Android应用内多进程的使用及注意事项
- Maven学习7之生命周期管理
- CentOS7.0 PHP卸载以及安装
- h5与css3权威指南初级(一)
- JNI
- 我是实践派之mongo的一主多从
- Java Thread.join()方法
- 属性动画
- Java 属性文件(properties)的注释
- eclipse的一些快捷键
- iOS SEL
- 学习PS基础教程