#include <stdio.h>
#include <malloc.h>
int *number;
void SortOddBeforeEven(int *number,int n){
int left = 0,right = n-1;
//下标
int oIndex = 0,eIndex = 0;
//二分遍历
while(left < right){
//从左边直到第一个偶数
while(left < right && (number[left] % 2 != 0)){
left++;
}
//从右边直到第一个奇数
while(left < right && (number[right] % 2 == 0)){
right--;
}
//奇偶数交换
if(left < right){
int temp;
temp = number[left];
number[left] = number[right];
number[right] = temp;
}
}
}
int main()
{
int i,n;
while(scanf("%d",&n) != EOF){
number = (int *)malloc(sizeof(int)*n);
for(i = 0;i < n;i++){
scanf("%d",&number[i]);
}
SortOddBeforeEven(number,n);
for(i = 0;i < n;i++){
if(i == n-1){
printf("%d\n",number[i]);
}
else{
printf("%d ",number[i]);
}
}
}
return 0;
}
题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
输入:
每个输入文件包含一组测试案例。
对于每个测试案例,第一行输入一个n,代表该数组中数字的个数。
接下来的一行输入n个整数。代表数组中的n个数。
输出:
对应每个测试案例,
输入一行n个数字,代表调整后的数组。注意,数字和数字之间用一个空格隔开,最后一个数字后面没有空格。
样例输入:
5
1 2 3 4 5
样例输出:
1 3 5 2 4
/*********************************
* 日期:2013-11-15
* 作者:SJF0115
* 题号: 题目1516:调整数组顺序使奇数位于偶数前面
* 来源:http://ac.jobdu.com/problem.php?pid=1516
* 结果:AC
* 来源:剑指Offer
* 总结:
**********************************/
#include <stdio.h>
#include <malloc.h>
int *number;
void SortOddBeforeEven(int *number,int n){
if(n <= 0 || number == NULL){
return;
}
int oIndex = 0,eIndex = 0,i;
int *odd,*even;
odd = (int *)malloc(sizeof(int)*n);
even = (int *)malloc(sizeof(int)*n);
//寻找奇偶数
for(i = 0;i < n;i++){
//奇数
if(number[i] & 0x1 != 0){
odd[oIndex++] = number[i];
}
//偶数
else{
even[eIndex++] = number[i];
}
}
//输出奇数
for(i = 0;i < oIndex;i++){
//只有奇数
if(i == oIndex - 1 && eIndex == 0){
printf("%d",odd[i]);
}
else{
printf("%d ",odd[i]);
}
}
//输出偶数
for(i = 0;i < eIndex;i++){
if(i != eIndex - 1){
printf("%d ",even[i]);
}
else{
printf("%d",even[i]);
}
}
printf("\n");
}
int main()
{
int i,n;
while(scanf("%d",&n) != EOF){
number = (int *)malloc(sizeof(int)*n);
for(i = 0;i < n;i++){
scanf("%d",&number[i]);
}
SortOddBeforeEven(number,n);
}
return 0;
}
分享到:
相关推荐
title: 剑指Offer-调整数组顺序使奇数位于偶数前面subtitle: 调整数组顺序使奇数位于偶数前面categories: 剑指Offer调整数组顺序
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后
# Python实现《剑指offer》 部分代码自己添加了一些测试用例, 或者自己添加了一些功能 1. 初级程序员注重算法和数据结构 2. 事先做好准备,对工作有热情 3. 面试过程放松。不要急于写代码,了解清楚所要解决的问题,...
剑指Offer(Python多种思路实现):调整数组的顺序使奇数位于偶数前面 面试21题: 题目:调整数组的顺序使奇数位于偶数前面 题一:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前...
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 2、书上的解法(相对位置改变) ...
调整数组顺序使奇数位于偶数前面,对称的二叉树,二叉树的镜像,二叉树的深度,二叉树的下一个节点,二叉树中和为某一值的路径,二叉搜索树的第k个节点,二叉搜索树的后序遍历序列,二叉搜索树和双向链表,二进制中1的个数,二...
14. 使数组中的奇数位于偶数前面 15. 找链表中倒数第K个节点 16. 输出反转后的链表 17. 合并两个有序链表 18. 判断二叉树A中是否包含子树B 19. 二叉树的镜像 20. 顺时针打印矩阵 21. 包含min函数的栈 22. ...
面试题14:调整数组顺序使奇数位于偶数前面 面试题18:树的子结构 面试题20:顺时针打印矩阵 面试题21:最小栈 面试题26:复杂链表的复制 面试题31:连续字数组的最大和 面试题32:从1到n的整数中1出现的次数 面试题...
leetcode中国 LeetCode 刷题记录 分类 二维数组 题目名称 goldhadis Toetoise FlashOpen-Go 对角线遍历 ...调整数组顺序使奇数位于偶数前面 Y Y Y 剑指 Offer 24. 反转链表 Y Y Y 剑指 Offer 25. 合并
调整数组顺序使奇数位于偶数前面 代码的完整性 14 链表中倒数第k个结点 代码的鲁棒性 15 反转链表 代码的鲁棒性 LeetCode 206 16 合并两个排序的链表 代码的鲁棒性 17 树的子结构 代码的鲁棒性 18 二叉树的镜像 面试...
调整数组使奇数位于偶数前面19.顺时针打印矩阵28.数组中出现次数超过一半的数字30.连续子数组最大和32.把数组排出最小的数35.数组中的逆序对37.数字在排序数组中出现的次数40.数组中自出现过一次的数字50.数组中的...
调整数组顺序使奇数位于偶数前面 链表中倒数第 k 个节点 - [移除单链表倒数第 n 个节点] - leetcode 19 反转链表 - [反转单链表] - leetcode 206 合并两个排序的链表 - [合并两个有序链表]- leetcode 21 树的子结构 ...
Interviews(剑指offer Java代码)二维数组中的查找替换空格从尾到头打印链表重建二叉树用两个栈实现队列旋转数组的最小数字斐波那契数列跳台阶变态跳台阶矩形覆盖二进制中1的个数数值的整数次方调整数组顺序使奇数...
leetcode中文版 ...√调整数组顺序使奇数在偶数前 -> √链表中倒数第K个节点 -> √链表中环的入口节点 -> √反转链表 -> 只用了递归,下次用循环 √合并两个排序的链表 -> √树的子结构 -> * √二叉树
13.调整数组顺序使奇数位于偶数前面 14.单链表:链表中倒数第k个结点 15.单链表:反转链表 16.单链表:合并两个排序的链表 17.二叉树:树的子结构 18.二叉树:二叉树的镜像 19.顺时针打印矩阵 20.栈:包含min函数的栈
14调整数组顺序使奇数位于偶数前面 15链表中倒数第k个结点 16反转链表 17合并两个排序的链表 18树的子结构 19二叉树的镜像 20顺时针打印矩阵 21包含min函数的栈 22栈的压入弹出序列 23从上往下打印二叉树 24二叉搜索...
Leetcode扑克 项目简介 该项目为《剑指Offer》题解 OnlineJudge 题目 个人建议能使用LeetCode还是尽量用LeetCode。因为LeetCode题目接口更为...调整数组顺序使奇数位于偶数前面 905. Sort Array By Parity 链表中倒数第
在指定空间中创建对象数组去重时间格式化获取字符串长度邮箱字符串判断颜色字符串转换字符串转为驼峰格式字符串字符统计剑指offer二维数组中的查找替换空格从尾到头打印链表重建二叉树用两个栈实现队列旋转数组的...
调整数组顺序使奇数位于偶数前面 6、29. 顺时针打印矩阵 7、39. 数组中出现次数超过一半的数字 8、57. 和为s的两个数字 9、57-II. 和为s的连续正数序列 10、 58-I. 翻转单词顺序 11、58-II. 左旋转字符串 12、66. ...