c - 数组下标的无效类型 'int*[__complex__ int]'

标签 c arrays heapsort

这是我的代码,我无法找出哪里出错了。

void heapify(int arr[], int n)
{
int i=n/2 , j, temp;
for(i=n/2; i>0; i--)
{
    if(arr[2i]<arr[i])
    {
        temp = arr[2i];
        arr[2i]= arr[i];
        arr[i]= temp;
    }
    if(arr[2i+1]<arr[i])
    {
        temp = arr[2i];
        arr[2i]= arr[i];
        arr[i]= temp;
    }
}
printf("Output:\n");
for(j=1; j<=n; j++)
{
    printf("%d ", arr[j]);
}
}

int main()
{
int arr[11]={0,12,54,21,74,1,46,91,13,76,22}, n=10;
heapify(arr, n);
return 0;
}

它抛出以下错误:

[Error] invalid types 'int*[__complex__ int]' for array subscript

请帮助..我正在努力在这里实现堆排序。提前致谢

最佳答案

在 C 中,2i 是一个复数(虚数)(编译器错误消息实际上告诉您这一点)。您需要使用 * 运算符进行乘法运算。将所有出现的 arr[2i] 更改为 arr[2*i],例如

    arr[2i] = arr[i];

应该是:

    arr[2*i] = arr[i];

关于c - 数组下标的无效类型 'int*[__complex__ int]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32362925/

相关文章:

php - 创建具有指定数量元素的数组

Ruby:根据整数数组对对象数组进行排序

java - ArrayIndexOutOfBoundsExecption :Android

c - 打印特定年份和月份的日历

c++ - LLVM 中的非指针全局变量

c - 以“可能”在尽可能多的系统上工作的方式读取低指针位

我可以依靠 malloc 返回 NULL 吗?

PostgreSQL:如何强制数据库使用 "quicksort"排序方法而不是 "top-N heapsort"?

python - 在 Python 中对二维数组进行部分 argsort

arrays - 如何证明从完全二叉树到数组的转换?