题目:
输入一个证书数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
思想:维护两个指针,第一个指针初始化时指向数组的第一个数字,她只向后移动;第二个指针初始化时指向数组的最后一个数字,她只向
前移动。在这两个指针相遇之前,第一个指针总是位于第二个只针对前面。如果第一个指针指向的数字式偶数,并且第二个指针指向的数字
是奇数,交换这两个数字。
代码:
#include<stdio.h>
#include<stdlib.h>
void reorder(int* pData,unsigned int length,bool (*func)(int))
{
if(pData==NULL||length==0)
return;
int* pBegin=pData;
int* pEnd=pData+length-1;
while(pBegin<pEnd)
{
while(pBegin<pEnd&&!func(*pBegin))
pBegin++;
while(pBegin<pEnd&&func(*pEnd))
pEnd--;
if(pBegin<pEnd)
{
int temp=*pBegin;
*pBegin=*pEnd;
*pEnd=temp;
}
}
}
bool isEven(int n)
{
return (n&0x1)==0;
}
void reorderOddEven(int *pData,unsigned int length)
{
reorder(pData,length,isEven);
}
int main()
{
unsigned int number;
scanf("%d",&number);
int* array = (int*)malloc(number*sizeof(int));
for(int i=0;i<number;i++)
{
int data;
scanf("%d",&data);
array[i]=data;
}
printf("the array is:\n");
for(int i=0;i<number;i++)
printf("%d",*array+i);
printf("\n");
reorderOddEven(array,number);
printf("now the array is:\n");
for(int j=0;j<number;j++)
printf("%d",array[j]);
return 0;
}
结果:
分享到:
相关推荐
调整数组顺序使奇数位于偶数前面,python,jupyter,调整数组顺序使奇数位于偶数前面,python,jupyter
调整数组顺序使奇数位于偶数前面.md
java基础面试题调整数组顺序使奇数位于偶数前面本资源系百度网盘分享地址
面试题21. 调整数组顺序使奇数位于偶数前面题目链接面试题21. 调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字
title: 剑指Offer-调整数组顺序使奇数位于偶数前面subtitle: 调整数组顺序使奇数位于偶数前面categories: 剑指Offer调整数组顺序
调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后
# Python实现《剑指offer》 部分代码自己添加了一些测试用例, 或者自己添加了一些功能 1. 初级程序员注重算法和数据结构 2. 事先做好准备,对工作有热情 3. 面试过程放松。不要急于写代码,了解清楚所要解决的问题,...
剑指Offer(Python多种思路实现):调整数组的顺序使奇数位于偶数前面 面试21题: 题目:调整数组的顺序使奇数位于偶数前面 题一:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前...
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 2、书上的解法(相对位置改变) ...
1 数组 3 1.1 求子数组的最大和 3 ...1.3 调整数组顺序使奇数位于偶数前面 5 1.4 找出数组中两个只出现一次的数字 5 1.5 旋转数组 7 1.6 旋转数组的最小元素 11 1.7 扑克牌的顺子 13 2 树 15 2.1 二叉树的非递归操作 15
调整数组顺序使奇数位于偶数前面,对称的二叉树,二叉树的镜像,二叉树的深度,二叉树的下一个节点,二叉树中和为某一值的路径,二叉搜索树的第k个节点,二叉搜索树的后序遍历序列,二叉搜索树和双向链表,二进制中1的个数,二...
面试题14:调整数组顺序使奇数位于偶数前面 面试题18:树的子结构 面试题20:顺时针打印矩阵 面试题21:最小栈 面试题26:复杂链表的复制 面试题31:连续字数组的最大和 面试题32:从1到n的整数中1出现的次数 面试题...
Leetcode扑克 项目简介 该项目为《剑指Offer》题解 OnlineJudge 题目 个人建议能使用LeetCode还是尽量用LeetCode。因为LeetCode题目接口更为...调整数组顺序使奇数位于偶数前面 905. Sort Array By Parity 链表中倒数第
leetcode中国 LeetCode 刷题记录 分类 二维数组 题目名称 goldhadis Toetoise FlashOpen-Go 对角线遍历 ...调整数组顺序使奇数位于偶数前面 Y Y Y 剑指 Offer 24. 反转链表 Y Y Y 剑指 Offer 25. 合并
13.调整数组顺序使奇数位于偶数前面 14.单链表:链表中倒数第k个结点 15.单链表:反转链表 16.单链表:合并两个排序的链表 17.二叉树:树的子结构 18.二叉树:二叉树的镜像 19.顺时针打印矩阵 20.栈:包含min函数的栈
调整数组顺序使奇数位于偶数前面 代码的完整性 14 链表中倒数第k个结点 代码的鲁棒性 15 反转链表 代码的鲁棒性 LeetCode 206 16 合并两个排序的链表 代码的鲁棒性 17 树的子结构 代码的鲁棒性 18 二叉树的镜像 面试...
调整数组顺序使奇数位于偶数前面 数组中出现次数超过一半的数字 最小的k个数 数组中的第K个最大元素 把数组排成最小的数 存在重复元素 打乱数组 三数之和 化栈为队 144.二叉树的前序遍历 146.LRU缓存机制 155.最小栈...
调整数组顺序使奇数位于偶数前面 链表中倒数第 k 个节点 - [移除单链表倒数第 n 个节点] - leetcode 19 反转链表 - [反转单链表] - leetcode 206 合并两个排序的链表 - [合并两个有序链表]- leetcode 21 树的子结构 ...