📜  c排序奇偶程序-C编程语言(1)

📅  最后修改于: 2023-12-03 14:40:25.846000             🧑  作者: Mango

以 C 排序奇偶程序

在本文中,我们将探讨如何使用 C 编程语言编写一个能够将奇偶数分别排序的程序。

思路

我们可以利用两个指针,一个从数组开头向后扫描,另一个从数组末尾向前扫描。如果左边的指针位置上的数是偶数,右边的指针位置上的数是奇数,那么就将两个数交换位置。

在一趟排序中,我们至少能将一个奇数和一个偶数交换位置,因此排序次数的上限为数组长度的一半。如果经过排序后,仍然有未排序的数,我们就可以接着使用同样的方法排序,直到所有数都排好序。

代码实现

下面是我们排序奇偶数的程序实现:

#include <stdio.h>

void sort(int arr[], int n) {
    int i = 0;
    int j = n - 1;
    while (i < j) {
        while (i < j && arr[i] % 2 == 0) {
            i++;
        }
        while (i < j && arr[j] % 2 == 1) {
            j--;
        }
        if (i < j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }
}

int main() {
    int arr[] = {3, 5, 2, 8, 7, 6, 1, 4};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("原始数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    sort(arr, n);
    printf("\n排序后数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

在上面的程序中,我们首先定义了一个 sort() 函数,该函数以排序后的数组和数组长度为参数。函数内部使用两个指针,分别指向数组的开头和结尾,然后扫描数组,用上面的算法将奇数和偶数分别排序。

main() 函数中,我们首先定义了一个数组,并手动初始化。然后我们调用 sort() 函数进行排序,并按照顺序输出排序后的数组。

结论

从输出结果可以看出,我们已经成功地实现了奇偶数排序的程序。通过这个例子,我们深入理解了如何思考和解决实际问题的能力。

完整的代码片段已经被上面包含,你可以将代码复制到 C 编译器中进行实验。