关于c:实现将一个数组中的所有奇数放到数组前部分偶数放到数组后部分

如题:
利用数组的左右指针,从两端往两头遍历数组,若左指针遇到偶数,右指针遇到奇数则奇偶替换,晓得左右指针不能挪动地位

#include<stdio.h>
#include<string.h>
void swap(int* left, int* right)//办法一
{
    while (left < right)
    {
        if ((*left) % 2 == 1)
        {
            left++;
            
        }
        if ((*right) % 2 == 0)
        {
            right--;
        }
        else
        {
            int temp = 0;
            temp = *left;
            *left = *right;
            *right = temp;
        }
    }
}
void swap1(int* left, int* right)//办法二
{
    while (left < right) {
        while ((*left) % 2 == 1)
        {
            left++;
        }
        while ((*right) % 2 == 0)
        {
            right--;
        }
        while (left < right)
        {
            int temp = 0;
            temp = *left;
            *left = *right;
            *right = temp;
        }
    }
}
void print(int* arr,int len)
{
    int i = 0;
    for ( i = 0; i < len; i++)
    {
        printf("%3d", arr[i]);
    }
}
int main()
{
    int arr[] = { 1,6,5,2,7,8,10,4,9 };
    int len = sizeof(arr) / sizeof(arr[0]);
    //swap(arr, arr + len - 1);
    swap1(arr, arr + len - 1);
    print(arr, len);


}
正文:当数组全为奇数或偶数时,应加上约束条件left<right避免指针越界拜访数组元素

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理