国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【劍指offer】面試題14:調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面

2019-11-06 07:24:53
字體:
供稿:網(wǎng)友
//調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面#include<iostream>using namespace std;//基本解法void ReorderOddEven(int *pData, int length){ if (pData == NULL || length <= 0) { return; } //定義兩個(gè)指針 int *pBegin = pData; int *pEnd = pData + length - 1; while (pBegin < pEnd) { while ((pBegin<pEnd)&&(*pBegin & 1))//注意添加另外一個(gè)限制條件(pBegin<pEnd) { ++pBegin; } while ((pBegin<pEnd)&&((*pEnd & 1) == 0)) { --pEnd; } if (pBegin < pEnd) { int temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; } }}

考慮可擴(kuò)展性的解法:

如果題目改為:數(shù)組按照大小分為兩部分,所有負(fù)數(shù)都在非負(fù)數(shù)的前面。 或者改為分為兩部分,能被3整除的放到前面,不能被整除的放到后面。 該如何解決: 大的邏輯框架不用改變,把判斷的標(biāo)準(zhǔn)改為一個(gè)函數(shù)指針。 可以把整個(gè)函數(shù)分為兩個(gè)部分:一是判斷數(shù)字是在數(shù)組中的前半段還是后半段。2.拆分?jǐn)?shù)組的操作

bool isEven(int n)//判斷是否為偶數(shù){ return (n & 1) == 0;}void ReorderOddEven(int *pData, int length, bool(*func)(int)){ if (pData == NULL || length <= 0) { return; } //定義兩個(gè)指針 int *pBegin = pData; int *pEnd = pData + length - 1; while (pBegin < pEnd) { while ((pBegin<pEnd) && (!func(*pBegin)))//注意添加另外一個(gè)限制條件(pBegin<pEnd) { ++pBegin; } while ((pBegin<pEnd) && func(*pBegin))//函數(shù)指針可以直接當(dāng)函數(shù)名進(jìn)行使用 { --pEnd; } if (pBegin < pEnd) { int temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; } }}

測(cè)試函數(shù):

int main(){ int number[] = {5,2,6,7,8,9,1}; ReorderOddEven(number, 7); for (int i = 0; i < 7; ++i) { 這里寫圖片描述


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石城县| 望城县| 巴南区| 当雄县| 新龙县| 栾川县| 新沂市| 建宁县| 肥东县| 万盛区| 鹤山市| 吉木萨尔县| 三都| 屯昌县| 南陵县| 尼勒克县| 定安县| 崇仁县| 岐山县| 上栗县| 巴楚县| 禹州市| 阳高县| 牙克石市| 平果县| 灵台县| 丹东市| 蒙阴县| 壶关县| 桓仁| 乌拉特中旗| 大埔县| 华蓥市| 遂平县| 绩溪县| 静乐县| 祁东县| 辛集市| 穆棱市| 张家港市| 临湘市|