考慮可擴(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) {
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注