在线编译器 C

#include <stdio.h> void sort_even_odd(int n, int a[]) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (a[j] % 2 != 0 && a[j + 1] % 2 == 0) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } } int main() { int a[5] = {1, 23, 5, 8, 6}; // 1 5 8 6 23// sort_even_odd(5, a); return 0; }
这段代码实现了一个冒泡排序的变体,目的是将数组中的偶数移到前面,奇数移到后面。但目前的排序逻辑只考虑了奇偶性,没有对奇数和偶数内部进行排序。

- 你的冒泡循环只交换了“奇数在前、偶数在后”的相邻元素,这确实能把偶数往前移动,但奇数和偶数内部的顺序是随机的,没有按大小排序。
- 注意题目要求可能是“偶数在前,奇数在后,且各自按升序排列”。你的代码只完成了奇偶分离,缺少了内部排序的步骤。