【发布时间】:2020-04-06 05:34:38
【问题描述】:
我来自 python,正在尝试学习 C,但我昨天才开始使用这个指针的东西。我写了一个反向排序算法,它应该采用一个未排序的数组,然后在每次遍历中选择最高和最低的元素,将它们放在每一端,然后递归地执行相同的操作,忽略已经排序的元素。问题是我总是遇到一些错误(不同的错误取决于我尝试更改的内容),我无法修复指针类型。你们能帮忙吗?
#include <stdio.h>
void inv_cocksort(int *arr[], int first, int last);
int main(void)
{
int unsorted[11] = {3, 1, 4, 5, 4, 2, 6, 9, 2, 8, 7};
int unsorted_length = 11;
for (int i = 0; i < unsorted_length; i++)
{
printf("%i", unsorted[i]);
}
inv_cocksort(&unsorted, 0, unsorted_length-1);
for (int i = 0; i < unsorted_length; i++)
{
printf("%i", unsorted[i]);
}
void inv_cocksort(int *arr[], int first, int last)
{
if (first > last)
{
return;
}
else
{
for (int i = 0; i < last-1; i++)
{
if (arr[i] < arr[last])
{
int temp = *arr[last];
*arr[i] = *arr[last];
*arr[last] = temp;
}
if (arr[i] > arr[first])
{
int temp2 = *arr[first];
*arr[i] = *arr[first];
*arr[last] = temp2;
}
}
inv_cocksort(&arr[], first+1, last-1)
}
}
【问题讨论】:
-
当你做什么的时候你会得到哪个错误?
-
我觉得你需要把
for (int i = 0; i < last-1; i++)改成for (int i = first; i < last-1; i++)或者类似的 -
我改变了定义函数的方式;我尝试将第一个参数定义为 int *unsorted[] 以告诉它接受和寻址并将 &unsorted 传递给它。我收到诸如无效指针类型之类的错误,并且在没有强制转换的情况下将 int 更改为指针。无法让它工作。