配列要素の分類
タイトル:
奇数が偶数より前になるように配列順序を調整
整数配列を入力し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置するように、配列内の数値の順序を調整する関数を実現します.
プログラム1.0:
2つのポインタを使用して、1つのポインタが先頭を指し、1つのポインタが先頭を指し、1つのポインタが奇数に遭遇すると後に移動し、偶数に遭遇すると尾ポインタが指す要素と交換し、頭ポインタ交換が完了すると後に移動し、尾ポインタ交換が完了すると前に移動し、2つのポインタが同じアドレス交換が終了する
プログラム1.1
奇数が偶数より前になるように配列順序を調整
整数配列を入力し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置するように、配列内の数値の順序を調整する関数を実現します.
プログラム1.0:
2つのポインタを使用して、1つのポインタが先頭を指し、1つのポインタが先頭を指し、1つのポインタが奇数に遭遇すると後に移動し、偶数に遭遇すると尾ポインタが指す要素と交換し、頭ポインタ交換が完了すると後に移動し、尾ポインタ交換が完了すると前に移動し、2つのポインタが同じアドレス交換が終了する
void ReorderOddEven(int *pData, size_t length)
{
assert(pData);
assert(length);
int*pHead = pData;
int*pTail = pData + length - 1;
while (pHead != pTail)
{
if ((*pHead & 0x1) == 0)//
{
swap(*pHead, *pTail);
pTail--;
}
pHead++;
}
}
プログラム1.1
void ReorderOddEven(int *pData, size_t length)
{
assert(pData);
assert(length);
int *pHead = pData;
int*pTail = pData + length - 1;
while (pHead
2.0
: while
, ?( , )
void ReorderOddEven(int *pData, size_t length, bool(*func)(int))
{
assert(pData);
assert(length);
Reorder(pData, length, isEven);
}
void Reorder(int *pData, size_t length, bool(*func)(int))
{
int *pHead = pData;
int*pTail = pData + length - 1;
while (pHead
, isEven ,