14、调整数组顺序使计数位于偶数前面
来源:互联网 发布:淘宝手机寄修靠谱吗 编辑:程序博客网 时间:2024/05/10 19:26
/*调整数组顺序使计数位于偶数前面*/#include "stdafx.h"void Reorder(int *pData, unsigned int length, bool (*func)(int));bool isEven(int n);// ====================方法一====================void ReorderOddEven_1(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; } }}// ====================方法二====================void ReorderOddEven_2(int *pData, unsigned int length){Reorder(pData, length, isEven);}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) {// 向后移动pBegin while(pBegin < pEnd && !func(*pBegin)) pBegin ++;// 向前移动pEnd while(pBegin < pEnd && func(*pEnd)) pEnd --;if(pBegin < pEnd){ int temp = *pBegin; *pBegin = *pEnd; *pEnd = temp;}}}bool isEven(int n){ return (n & 1) == 0;}// ====================测试代码====================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_1(numbers, length);PrintArray(numbers, length);printf("Test for solution 2:\n"); PrintArray(copy, length);ReorderOddEven_2(copy, length);PrintArray(copy, 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 _tmain(int argc, _TCHAR *argv){//Test1();//Test2(); //Test3(); //Test4(); //Test5(); Test6();return 0;}
0 0
- 14、调整数组顺序使计数位于偶数前面
- 调整数组顺序使奇数位于偶数前面14
- 14调整数组顺序使奇数位于偶数前面
- 题目14:调整数组顺序使奇数位于偶数前面
- 面试14:调整数组顺序使奇数位于偶数前面
- 14_调整数组顺序使奇数位于偶数前面
- 14调整数组顺序使奇数位于偶数前面python
- 试题14:调整数组顺序使奇数位于偶数前面
- 【数组3】-调整数组顺序使奇数位于偶数前面
- 数组3:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面--总结
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面[
- 调整数组顺序使奇数位于偶数前面
- web进门第13天
- C和指针2.2
- 关于java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible
- Linux top命令的用法详细详解
- 扣丁学堂——ExpandableListView(可扩展列表)
- 14、调整数组顺序使计数位于偶数前面
- perl 监控日志告警
- [前端] node UDP 用户数据报测试
- LightOJ 1051 - Good or Bad(DP)
- 命令行如何查看端口被占用,并且终止进程。
- 理解AngularJS的作用域Scope
- CStdioFile总结
- LintCode_字符串查找
- postgresql 复制方法研究