2n 长度数组,n个奇数,n个偶数,把奇数放在奇数位,偶数放在偶数位
来源:互联网 发布:淘宝套餐链接转换 编辑:程序博客网 时间:2024/04/29 20:11
1. 先将偶数放在前面,奇数放在后面,然后在交换 a[i] <--> a[2n - i] for i=left+1 ~ n 共 2n + n/2
2. 找出奇数在偶数位 与 偶数在奇数位,然后交换 4*n
#include <stdio.h>#include <time.h>#include <stdlib.h>#define N 1000000void oddEven1(int a[],int left,int right){int i=left,j = right;int tmp = 0;while(i<j){while(i<=right && a[i] % 2 == 0)i++;while(j>=left && a[j] % 2 == 1)j--;if(i<j)tmp = a[i],a[i] = a[j], a[j] = tmp;}j = left + (right - left)/2;for(i=left+1;i <=j;i += 2)tmp = a[i],a[i] = a[right - i],a[right - i] = tmp;}void oddEven2(int a[], int left,int right){int i = left,j = right;int tmp = 0;while(i<=right){while(i<= right)if(i % 2 == 0 && a[i] % 2 ==1)break;elsei++;while(j>=left)if(j % 2 == 1 && a[j] % 2 == 0)break;elsej--;if(i<=right && j>= left)tmp = a[i],a[i] = a[j],a[j] = tmp;}}int main(){int a[N];int i=0;//srand((unsigned)time(NULL));for(i=0;i<N;i++)a[i] = i+1;oddEven1(a,0,N-1);/*for(i=0;i<N;i++)printf("%d ",a[i]);putchar('\n');*//*oddEven2(a,0,N-1);for(i=0;i<N;i++)printf("%d ",a[i]);putchar('\n');*/}
0 0
- 2n 长度数组,n个奇数,n个偶数,把奇数放在奇数位,偶数放在偶数位
- 重排数组元素,奇数放在奇数位,偶数放在偶数位
- 数组进行奇数和偶数操作 把奇数放在数组前面 偶数放在数组后面
- 假设一个数组A[n]数据均为整形,设计一个O(n)的算法,实现将所有奇数放在数组左侧,所有偶数放在右侧
- 将数组中的奇数放在偶数前面
- 将无序数组中的奇数放在偶数前面
- 如何将数组中奇数放在偶数前面。
- 把数组里面的 奇数 放在 偶数 前面 并排序
- 剑指offer 面试题14 把数组所有偶数放在奇数后面
- 将一个数组中奇数放在数组前边,偶数放在数组后边
- java数组中,然后把奇数放在数组的左边,偶数放在右边,方法一
- java数组中,然后把奇数放在数组的左边,偶数放在右边,方法二
- 已知一个整数数组A[n],写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边。要求时间复杂度为O(n)。
- 课堂提问(C语言):输入10个整数到一个数组,将奇数放在数组前面,偶数放在数组后面,然后输出整个数组。
- 奇数位于偶数前面O(n)
- n个数中奇数和,偶数和
- 链表奇数元素放在偶数元素前面
- 递归-奇数放左边,偶数放右边
- poj1258 Agri-Net 最小生成树,kruskal算法
- java中的equals和==区别
- Android OpenGL ES(五):GLSurfaceView
- Java调用XML的方法:DocumentBuilderFactory
- 初次尝试ActiveMQ,实现简单的消息生产和消息消费
- 2n 长度数组,n个奇数,n个偶数,把奇数放在奇数位,偶数放在偶数位
- APP打包以及提交apple审核详细流程
- 添加了ActiveX控件后,对话框Dododal失败
- 【原创】Tiny6410简单驱动 --- LED控制
- lzk-1
- 10071-Back to High School Physics
- 二维数组内存图解
- Flume监听文件目录sink至hdfs配置
- C++ error C2027:使用了未定义类型 类的调用顺序