调整数组使奇数全部都位于偶数前面

来源:互联网 发布:可以看腐剧的软件 编辑:程序博客网 时间:2024/06/03 20:42

题目:

输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

#include<stdio.h>#include<assert.h>void set_procedure(int *p,int lens){    int *p1=p;    int *p2=p+lens-1;    assert(p1 != 0);    assert(p2 != 0);    while (p1 < p2)     {        while (p1 < p2 && (*p1 % 2) != 0)//向后移动p1,直到它指向偶数        {            p1++;        }        while (p1 < p2 && (*p2 % 2) == 0)//向前移动p2,直到它指向奇数         {            p2--;        }        if (p1 < p2)        {            int temp = *p1;            *p1 = *p2;            *p2 = temp;        }    }}int main(){    int i = 0;    int arr[] = { 1,2,3,4,5 };    int len = sizeof(arr) / sizeof(arr[0]);    set_procedure(arr,len);    for (i = 0; i < len; i++)    {        printf("%d\n", arr[i]);    }    return 0;}

难点:利用指针的不断移动遍历整个数组

阅读全文
0 0