您的位置:首页 > Web前端

【剑指 offer】(十四)—— 调整数组顺序使奇数位于偶数之前

2016-04-09 12:51 239 查看
维护两个指针,第一个指针初始化时指向数组的第一个数字,它只向后移动(++),另一个指针初始化时指向数组的最后一个数字,它只向前移动(–)。在两个指针相遇之前,第一个指针总是位于第二个指针的前面。如果第一个指针指向的数字是偶数,第二个指针指向的数字是计数,就交换这两个数字。

void ReorderOddEven(int* seq, int n)
{
if (!seq || n <= 0)
return;

int  s = 0, t = n - 1;

while (s < t)
{
while (s < t && seq[s] & 1)
++s;
while (s < t && (seq[t] & 1) == 0)
--t;
if (s < t)
swap(seq[s], seq[t]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: