Онлайн компилятор C

#include <stdio.h> void sort_array(int size, int a[]) { for (int i = 0; i < size - 1; i++) { int i_min = i; for (int j = i+1; j < size; j++) { if (a[i_min] > a[j]) { i_min = j; } } if (i_min != i) { int temp = a[i]; a[i] = a[i_min]; a[i_min] = temp; } } } int main() { int a[6] = {5 5 4 3 2 1}; sort_array(6,a); for (int i = 0; i < 6; i++){ printf("%d ", a[i]); } return 0; }
这段代码实现了一个选择排序算法,对数组进行升序排序。但在数组初始化时有一个语法错误。

- 数组初始化时,元素之间需要用逗号分隔,而不是空格。你在 `int a[6] = {5 5 4 3 2 1};` 中缺少了逗号,应该写成 `{5, 5, 4, 3, 2, 1}`。

- 选择排序的逻辑是正确的:每次找到未排序部分的最小元素,然后与当前位置交换。但注意你的数组中有重复元素5,排序后两个5会相邻,这是正确的行为。