调整数组顺序使奇数位于偶数前面
2016-05-08 20:08
423 查看
第一种:
开辟一个一样大小的数组,遍历原数组的数据,把原数组奇数依次存放在新数组的前面,偶数存放在后面。
时间复杂度:O(n^2);
空间复杂度:O(n)
缺陷:效率太差
第二种:
利用两个指针,一个指向数组开始,一个指向数组末尾,指向数组开始的那个指针依次向后遍历,找到偶数立即停下来,指向数组末尾的那个指针向前遍历,找到奇数停下来,判断start<=end,,交换两个值。
本文出自 “liveyoung” 博客,转载请与作者联系!
开辟一个一样大小的数组,遍历原数组的数据,把原数组奇数依次存放在新数组的前面,偶数存放在后面。
时间复杂度:O(n^2);
空间复杂度:O(n)
缺陷:效率太差
#include<stdio.h> #include<stdlib.h> void Adjust(int* src,int* des,int n) { int index=0; for(int j=0;j<n;j++) { if(src[j]%2) { des[index]=src[j]; index++; } } for(int j=0;j<n;j++) { if(!(src[j]%2)) { des[index]=src[j]; index++; } } } void test() { int a1[10]={2,4,4,66,76,86,20,10,24,18}; int a2[10]={1,3,5,35,15,13,17,19,17,21}; int a3[10]={1,2,5,36,16,13,17,19,14,21}; int a[10]; Adjust(a3,a,sizeof(a3)/sizeof(a3[0])); for(int i=0;i<sizeof(a3)/sizeof(a3[0]);i++) { printf("%d ",a3[i]); } printf("\n"); for(int i=0;i<sizeof(a)/sizeof(a[0]);i++) { printf("%d ",a[i]); } } int main() { test(); system("pause"); return 0; }结果:
第二种:
利用两个指针,一个指向数组开始,一个指向数组末尾,指向数组开始的那个指针依次向后遍历,找到偶数立即停下来,指向数组末尾的那个指针向前遍历,找到奇数停下来,判断start<=end,,交换两个值。
#include<stdio.h> #include<stdlib.h> bool Check(int num) { return num%2; } void swap(int* a,int *b) { int tmp=*a; *a=*b; *b=tmp; } void Adjust(int* a,int n) { int start=0; int end=n-1; while(start<=end) { while(Check(a[start])&&start<=end) { start++; } while(!(Check(a[end]))&&start<=end) { end--; } if(start<end) { swap(&a[start],&a[end]); } } } void test() { int a1[10]={2,4,4,66,76,86,20,10,24,18}; int a2[10]={1,3,5,35,15,13,17,19,17,21}; int a3[10]={1,2,5,36,16,13,17,19,14,21}; Adjust(a1,sizeof(a1)/sizeof(a1[0])); for(int i=0;i<sizeof(a1)/sizeof(a1[0]);i++) { printf("%d ",a1[i]); } printf("\n"); Adjust(a2,sizeof(a2)/sizeof(a2[0])); for(int i=0;i<sizeof(a2)/sizeof(a2[0]);i++) { printf("%d ",a2[i]); } printf("\n"); Adjust(a3,sizeof(a3)/sizeof(a3[0])); for(int i=0;i<sizeof(a3)/sizeof(a3[0]);i++) { printf("%d ",a3[i]); } } int main() { test(); system("pause"); return 0; }结果:
本文出自 “liveyoung” 博客,转载请与作者联系!
相关文章推荐
- Java线程和线程池学习笔记
- 在O(1)时间删除链表节点
- centos6.5实践(1):基础配置
- bzoj3205: [Apio2013]机器人
- Maven项目中不打包 *.hbm.xml 映射文件
- 关于CPU 缓存Cache
- 为XML添加CDATA标记
- 学习进度条
- SpringMVC原理
- vs 2015 编译cocos2dx 报错C1189 #error: Macro definition of snprintf conflicts with Standard Library func
- 安装oracle和plsql时的一点感想
- 数据库设计三大范式
- 一个基于RBAC的通用权限设计清单
- 修饰符|值类型、引用类型|List|索引器
- 学习进度条——第10周
- 一份给艺术爱好者的书单
- 同窗情【之一】(词21首)
- Java设计模式之模板方法设计模式
- python基础---数据类型之间的转换
- Android性能专项测试测试点指导(二)