面试题22

来源:互联网 发布:日文手写输入在线软件 编辑:程序博客网 时间:2024/06/03 13:58

调整数组顺序使奇数位于偶数前面。

输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分所有偶数位于数组的后半部分。要求时间复杂度为 O(n)。

#include<stdio.h>#include<assert.h>void Redrder(int *A, int len) {    assert(A);    /*使用首尾两个指针*/    int i = 0, j = len - 1;    while (i < j) {        if (A[i] % 2 == 1) {            i++;            continue;        }        if (A[j] % 2 == 0) {            j--;            continue;        }        if (i < j) {            int t = A[i];            A[i] = A[j];            A[j] = t;        }    }}int main() {    int A[] = {1,2,3,4};    int len = sizeof(A) / sizeof(A[0]);    Redrder(A, len);    for (int i = 0; i < len; i++)        printf("%d  ", A[i]);    return 0;}
0 0
原创粉丝点击