【发布时间】:2021-06-13 18:50:02
【问题描述】:
我正在尝试修改选择排序,使其将最大元素放在数组的末尾,然后对 n - 1 个项目重复选择排序,直到 n 为 0。我的代码编译但输出仍然是一个未排序的数组,请帮帮我!
#include <stdio.h>
void selection_sort(int arr[], int n);
int main ()
{
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
selection_sort(arr, n);
for(int i = 0; i < n; i++)
printf("%d\n", arr[i]);
return 0;
}
void selection_sort(int arr[], int n)
{
if(n <= 0)
return;
while(n > 0)
{
int max = 0;
int temp, x;
for(int i = 0; i < n; i++)
{
if(arr[i] >= max)
max = arr[i];
x = i;
}
temp = arr[n - 1];
arr[n - 1] = max;
arr[x] = temp;
selection_sort(arr, --n);
}
}
【问题讨论】:
-
使用自动工具缩进代码,然后检查明显的错误。
-
你试过调试一个失败的小例子吗?你的发现是什么?
标签: arrays c algorithm sorting selection-sort