调整数组顺序使奇数位于偶数前面
来源:互联网 发布:乐乎pt被关了 编辑:程序博客网 时间:2024/06/05 03:22
第一种:
开辟一个一样大小的数组,遍历原数组的数据,把原数组奇数依次存放在新数组的前面,偶数存放在后面。
时间复杂度: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” 博客,转载请与作者联系!
0 0
- 【数组3】-调整数组顺序使奇数位于偶数前面
- 数组3:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面--总结
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面[
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使偶数位于奇数前面
- coding - 调整数组顺序使奇数位于偶数前面
- SIGCHLD 信号
- sig_atomic_t类型与volatile限定符
- 回调函数与函数指针
- 可重入函数与线程安全
- 在O(1)时间删除链表节点
- 调整数组顺序使奇数位于偶数前面
- 二进制中1的个数
- 数值的整数次方
- 斐波那契数列的第n项。
- 从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数
- 求旋转数组的最小值
- 打印1到最大的n位数。
- 协议分析复习
- 在链表中找出倒数第K个节点