调整数组顺序,使得奇数总位于偶数前面
来源:互联网 发布:淘宝主图ps无缝拼接 编辑:程序博客网 时间:2024/05/18 12:01
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
#include <iostream>using namespace std;void ReOrderArray(int* arr, int length, bool (*func)(int)){if(arr == NULL || length <=0)return;int* pBegin = arr;int* pEnd = arr + length - 1;int temp;while(pBegin < pEnd){while (pBegin < pEnd && !func(*pBegin))pBegin++;while (pBegin < pEnd && func(*pEnd))pEnd--;if(pBegin < pEnd){temp = *pBegin;*pBegin = *pEnd;*pEnd = temp;}}}bool isEven(int n){if((n & 1) == 0)return true;elsereturn false;}void ReorderOddEven(int* arr, int length){ReOrderArray(arr, length, isEven);}
// ====================测试代码====================void PrintArray(int numbers[], int length){ if(length < 0) return; for(int i = 0; i < length; ++i) printf("%d\t", numbers[i]); printf("\n");}void Test(char* testName, int numbers[], int length){ if(testName != NULL) printf("%s begins:\n", testName); int* copy = new int[length]; for(int i = 0; i < length; ++i) { copy[i] = numbers[i]; } printf("Test for solution 1:\n"); PrintArray(numbers, length); ReorderOddEven(numbers, length); PrintArray(numbers, length); delete[] copy;}void Test1(){ int numbers[] = {1, 2, 3, 4, 5, 6, 7}; Test("Test1", numbers, sizeof(numbers)/sizeof(int));}void Test2(){ int numbers[] = {2, 4, 6, 1, 3, 5, 7}; Test("Test2", numbers, sizeof(numbers)/sizeof(int));}void Test3(){ int numbers[] = {1, 3, 5, 7, 2, 4, 6}; Test("Test3", numbers, sizeof(numbers)/sizeof(int));}void Test4(){ int numbers[] = {1}; Test("Test4", numbers, sizeof(numbers)/sizeof(int));}void Test5(){ int numbers[] = {2}; Test("Test5", numbers, sizeof(numbers)/sizeof(int));}void Test6(){ Test("Test6", NULL, 0);}int main(int argc, char* argv[]){ Test1(); Test2(); Test3(); Test4(); Test5(); Test6(); return 0;}
0 0
- 调整数组顺序,使得奇数总位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 【剑指offer】调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 剑指offer_调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面,且奇数与奇数,偶数与偶数之间的位置相对不变
- 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于偶数前面
- 调整数组的顺序使得奇数位于偶数的前面(剑指offer14)
- 剑指offer_14(调整数组顺序使得奇数位于偶数前面)
- #剑指offer--(15)调整数组顺序使得奇数位于偶数前面
- 【数组3】-调整数组顺序使奇数位于偶数前面
- 数组3:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 九度oj 1188
- DropDownListView下拉刷新和上拉加载和没有更多
- iOS URL缩短
- 计算机网络组网与配置技术—— 读书笔记3、传输介质和组网连接方法
- MFC程序的启动过程与相关函数执行顺序
- 调整数组顺序,使得奇数总位于偶数前面
- HDU 1159 Common Subsequence
- 曲线解决Android中对布局的截屏
- 访问pci设备中寄存器的一些方法
- 要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。
- 数据结构之伸展树(Splay)--BST的变种
- ndk-stack的使用
- DNA序列(uva-1368)
- pdf转换成html网页的操作方法