《剑指Offer》读书笔记---面试题14:调整数组顺序使奇数位于偶数前面
来源:互联网 发布:cms监控软件使用说明 编辑:程序博客网 时间:2024/06/05 16:22
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得偶数位于数组的后半部分。
一开始我是想到快速排序的Partitation函数的,所以按照快速排序的形式写了一下:
#include<cstdio>#include<iostream>const int N = 100 ;void Partitation(int *A,int p,int r) ;int main(void){int n ,i ;int A[N] ;freopen("in.txt","r",stdin) ;while(scanf("%d",&n) != EOF){for(i = 0 ; i < n ; ++i){scanf("%d",&A[i]) ;}Partitation(A,0,n) ;for(i = 0 ; i < n ; ++i){printf("%d ",A[i]) ;}printf("\n") ;}return 0 ;}//奇前偶后void Partitation(int *A,int p,int r){int x = 1 ;int i = p - 1 ;for(int j = p ; j < r ; ++j){if(1 == (A[j] & x)){i++ ;int nTemp = A[i] ; A[i] = A[j] ;A[j] = nTemp ;}}}/*********test************102 4 7 6 1 3 9 7 5 6 7 105 1 2 3 4 56 1 3 5 2 4 66 2 6 4 1 3 522 332 1 231 2 11312**************************/
大概做法就是维护两个指针,第一个指针初始化时指向数组的第一个数字,它只向后移动;第二个指针初始化时指向数组的最后一个数字,它只向前移动。在丙个指针相遇之前,第一个指针总是位于第二个指针的前面。如果第一个指针指向的数字是偶数,并且第二个指针指向的数字是奇数,我们就交换这两个数字。
void ReorderOddEven(int *pData,unsigned int length){if(pData == NULL || length == 0){return ;}int *pBegin = pData ;int *pEnd = pData + length - 1 ;while(pBegin < pEnd){//向后移动pBegin,直到它指向偶数while(pBegin < pEnd && (*pBegin &0x1) != 0){pBegin++ ;}//向前移动pEnd,直到它指向奇数while(pBegin < pEnd && (*pEnd & 0x1) == 0){pEnd-- ;}if(pBegin < pEnd){int temp = *pBegin ;*pBegin = *pEnd ;*pEnd = temp ;}}}
- 《剑指Offer》读书笔记---面试题14:调整数组顺序使奇数位于偶数前面
- [剑指offer][面试题14]调整数组顺序使奇数位于偶数前面
- 剑指offer 面试题14 调整数组顺序使奇数位于偶数前面
- 《剑指Offer》面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer 面试题14—调整数组顺序使奇数位于偶数前面
- 《剑指Offer》学习笔记--面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer--面试题14:调整数组顺序使奇数位于偶数前面--Java实现
- 【剑指Offer学习】【面试题14 :调整数组顺序使奇数位于偶数前面】
- 剑指offer面试题14-调整数组顺序使奇数位于偶数前面
- 剑指offer-面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer之面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer之面试题14调整数组顺序使奇数位于偶数前面
- 剑指Offer----面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer--面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14: 调整数组顺序使奇数位于偶数前面
- bp神经网络代码
- HTTP500:JsonArray报错
- Drop-down list in OA Framework
- POJ3432《Count Squares》方法:哈希
- 2013第六周上机任务【项目2 程序填空(1)】
- 《剑指Offer》读书笔记---面试题14:调整数组顺序使奇数位于偶数前面
- Ant上传文件到远程服务器
- ZOJ 3605Find the Marble
- 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
- MOQL--操作数(Operand) (二)
- 重要网址收藏
- opencv 智能指针 Ptr
- 第六周项目二——指针填空A
- 第六周项目二。