1377 数组奇偶对调排序 C语言
来源:互联网 发布:cities skylines mac 编辑:程序博客网 时间:2024/05/17 05:00
问题 F: 数组奇偶排序(数组)
时间限制: 1 Sec 内存限制: 128 MB
提交: 195 解决: 89
[提交][状态][讨论版]
题目描述
输入n,输入n个整数。调整数字位置使得偶数在序列的前半部分,奇数在序列的后半部分。
注:自己根据样例输入、输出找到算法。
要求算法的时间复杂度为O(n)。
输入
测试次数t
每组测试数据格式如下:
整数个数n,后跟n个整数
输出
对每组测试数据,输出整数个数和调整后的整数序列
样例输入
3
4 1 2 3 4
8 12 32 67 13 1 9 4 97
6 1 32 9 43 12 0
样例输出
4 4 2 3 1
8 12 32 4 13 1 9 67 97
6 0 32 12 43 9 1
#include<stdio.h>int main() { int a[50],i,j,k,t,n,tmp; int oddindex,evenindex; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d",&a[i]); } oddindex=0; evenindex=n; /** *整体的思路就是 *从前往后用i下标找奇数 *从后往前找j下标偶数 *找到之后对调两个的值 *直到i j下标相遇 **/ while(oddindex<evenindex) { for(i=oddindex; i<evenindex; i++) { //from head find odd if(a[i]%2==1) { oddindex =i; break; } } for(j=evenindex-1; j>oddindex-1; j--) { //from bottom find even if(a[j]%2==0) { evenindex =j; break; } } if(i<j) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; i++; j--; }else{ break; } } printf("%d ",n); for(i=0; i<n; i++) { if(i==n-1) { printf("%d\n",a[i]); } else { printf("%d ",a[i]); } } } return 0;}/************************************************************** Problem: 1377 Language: C++ Result: 正确 Time:0 ms Memory:800 kb****************************************************************/
阅读全文
0 0
- 1377 数组奇偶对调排序 C语言
- C语言实现数组的奇偶排序
- 实现奇偶排序(c语言)
- 数组奇偶数排序
- c语言--数组&排序
- c语言:奇偶个数
- C语言数组排序小结
- C语言数组排序总结
- C语言数组排序小结
- C语言数组排序小结
- C语言数组排序法
- C语言中的数组排序
- C语言数组排序小结
- c语言数组--冒泡排序
- c语言数组--选择排序
- c语言数组--插入排序
- C语言数组--快速排序
- C语言数组排序小结
- 内核线程、轻量级进程、用户线程三种线程概念解惑(线程≠轻量级进程)
- Kafka学习笔记
- spring aop实现日志管理
- Springboot+atomikos+jta实现分布式事务统一管理
- 用GDB调试程序(四)
- 1377 数组奇偶对调排序 C语言
- js获取left值的方法
- 接口练习 2
- c语言总结
- 信息增益在决策树中的应用
- 圆圈中最后剩下的数字
- CSS样式块级元素居中的方法
- HTTPS通信原理
- ASP.NET Web API 处理架构