思路:

  头尾指针,向中间遍历,依据条件交换元素。

 #include <iostream>
using namespace std; void reOrder(int *pData, unsigned int len, bool (*func)(int))
{
if(pData == NULL || len == )
return ; int *pStart = pData;
int *pEnd = pData + len - ; while(pStart < pEnd)
{
while(pStart < pEnd && !func(*pStart))
pStart++; while(pStart < pEnd && func(*pEnd))
pEnd--; if(pStart < pEnd)
{
int temp = *pStart;
*pStart = *pEnd;
*pEnd = temp;
}
}
} bool isEven(int n)
{
return (n & ) == ;
} bool isPositive(int n)
{
return (n < ) ? false : true;
} int main()
{
cout<<"给定一个数组,期望奇数在前,偶数在后"<<endl;
int a[] = {,,,,,,,,,};
cout<<"原数组: ";
for(int i = ; i < ; i++)
cout<<a[i]<<" ";
cout<<endl; reOrder(a, , isEven);
cout<<"重组后: ";
for(int i = ; i < ; i++)
cout<<a[i]<<" ";
cout<<endl<<endl; cout<<"给定一个数组,期望负数在前,正数在后"<<endl;
int b[] = {,-,,,-,,,-,-,}; cout<<"原数组: ";
for(int i = ; i < ; i++)
cout<<b[i]<<" ";
cout<<endl; reOrder(b, , isPositive); cout<<"重组后: ";
for(int i = ; i < ; i++)
cout<<b[i]<<" ";
cout<<endl; }

测试结果:

给定一个数组,期望奇数在前,偶数在后
原数组:
重组后: 给定一个数组,期望负数在前,正数在后
原数组: - - - -
重组后: - - - -

【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面的更多相关文章

  1. C++版 - 剑指offer面试题14: 调整数组顺序使奇数位于偶数前面

    题目: 调整数组顺序使奇数位于偶数前面 热度指数:11843 时间限制:1秒 空间限制:32768K 本题知识点: 数组 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇 ...

  2. 剑指Offer:面试题14——调整数组顺序使奇数位于偶数前面(java实现)

    问题描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 思路: 1.最简单的想法,不考虑时间复杂度,扫描数组,遇到偶数,先取出这 ...

  3. 剑指Offer - 九度1516 - 调整数组顺序使奇数位于偶数前面

    剑指Offer - 九度1516 - 调整数组顺序使奇数位于偶数前面2013-11-30 02:17 题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部 ...

  4. 剑指offer(13)调整数组顺序使奇数位于偶数前面

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 题目分析 判断是 ...

  5. 【剑指Offer】13、调整数组顺序使奇数位于偶数前面

      题目描述:   输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.   解题思 ...

  6. 【剑指offer】Q14:调整数组顺序使奇数位于偶数前面

    def isOdd(n): return n & 1 def Reorder(data, cf = isOdd): odd = 0 even = len( data ) - 1 while T ...

  7. 剑指offer编程题Java实现——面试题14调整数组顺序使奇数位于偶数之前

    题目: 输入一个整数数组,实现一个函数来调整该数组中数组的顺序,使得所有的奇数位于数组的前半部分,偶数位于数组的后半部分. 解题思路:数组中维护两个指针,第一个指针初始化时候指向数组头部,第二个指针初 ...

  8. 牛客网剑指offer第13题——调整数组顺序使得奇数位于偶数前面

    题目来源:剑指offer 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变 ...

  9. 《剑指offer》面试题14 调整数组顺序使奇数位于偶数前面 Java版

    (输入整数数组,使所有奇数位于前半部分,所有偶数位于后半部分.) 我的方法:想到用两个下标分别表示奇数和偶数的界线,一个在开头,一个在末尾,判断每一个数字的类别,然后将它放入对应的范围内,移动下标,直 ...

  10. 剑指offer-面试题14.调整数组顺序使奇数位于偶数的前面

    题目:输入一个整数数组,实现一个函数来调整该数组中的数字的顺序, 使得所有的奇数位于数组的前半部门,所有的偶数位于数组的后半部门. 这一题一看其实是很简单的,当然在不考虑效率的情况可以这样考虑 我们将 ...

随机推荐

  1. 李洪强iOS开发之OC[013] -类的创建的练习

    // //  main.m //  12 - 类的创建练习 // //  Created by vic fan on 16/7/9. //  Copyright © 2016年 李洪强. All ri ...

  2. unity3d泰斗破坏神2----课程列表

    免费 课时1:泰斗破坏神第一支预告视频 01:32免费 课时2:泰斗破坏神第二支预告视频 01:58第 1 章 : 游戏开始 用户登录 服务器选择课时3:游戏开始 用户登录 服务器选择课时4:素材介绍 ...

  3. CentOS7安装Hadoop2.7完整流程

    总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs.mapreduce等主从关系. 1.环境,3台CentOS7,64位,Hadoo ...

  4. svn:...target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)

    在上传项目到svn时,pom.xml报错

  5. 基于Struts2框架实现登录案例 之 程序国际化

    国际化牵涉的知识非常多,这里只能简单的介绍,程序国际化的一般做法是:在jsp页面时, 不是直接输出信息,而是输出一个key值,该key值在不同语言环境下找到对应资源文件下的 对应信息,因此首先要创建满 ...

  6. Java API —— List接口&ListIterator接口

    1.List接口概述         有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索 ...

  7. 一些非常有用的html,css,javascript代码片段(持久更新)

    1.判断设备是否联网 if (navigator.onLine) { //some code }else{ //others code } 2.获取url的指定参数 function getStrin ...

  8. [Codeforces673A]Bear and Game(水题,思路)

    题目链接:http://codeforces.com/contest/673/problem/A 题意:一个人看一个90分钟的节目,然后告诉你一些有趣的时刻.这个人假如在15分钟内还没有看到有趣的时刻 ...

  9. [POJ2828]Buy Tickets(线段树,单点更新,二分,逆序)

    题目链接:http://poj.org/problem?id=2828 由于最后一个人的位置一定是不会变的,所以我们倒着做,先插入最后一个人. 我们每次处理的时候,由于已经知道了这个人的位置k,这个位 ...

  10. ie6调试工具Debugbar

    http://www.my-debugbar.com/wiki/Doc/DebugbarInstall