首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序数组算法错误

排序数组算法错误
EN

Stack Overflow用户
提问于 2015-07-28 23:00:53
回答 3查看 68关注 0票数 0

您好,我写了这个排序算法,我不确定为什么我会得到以下错误:“成员引用基类型'int‘不是一个结构或联合”

代码语言:javascript
复制
void sort(float avg_dist, cg[]){

    int i,j,t;

    for(i=1; i<=cg[i]-1; i++)
        for(j=1; j<=cg[i]-i; j++)
            if(cg[j-1].avg_dist >= cg[j].avg_dist){
                t = cg[j-1];
                cg[j-1] = cg[j];
                cg[j] = t;

            }

}
EN

回答 3

Stack Overflow用户

发布于 2015-07-28 23:05:11

cg是一个整型数组。

您不能访问int的“成员”,例如

代码语言:javascript
复制
cg[j-1].avg_dist

我不知道你到底想做什么。也许是成倍的增长?

代码语言:javascript
复制
 cg[j-1] * avg_dist
票数 2
EN

Stack Overflow用户

发布于 2015-07-28 23:08:46

这不是问题所在,但您(可能是有意地)在函数中省略了类型说明符

void sort(float avg_dist, cg[]){

C默认使用int数组类型,这当然会使cg[j].avg_dist在语法上无效。(实际上,您可能希望乘以avg_dist,请使用*而不是成员选择运算符.)。

票数 0
EN

Stack Overflow用户

发布于 2015-07-28 23:40:04

这应该会让你有一个清晰的想法:

代码语言:javascript
复制
#include <stdio.h>

void sortArray(int *array, int length){
  int i,j, k, temp;

  for (i = 0 ; i < length-1; i++){
    for (k = 0 ; k < length-i-1; k++){
      if (array[k] > array[k+1]){
        temp = array[k];
        array[k]   = array[k+1];
        array[k+1] = temp;
      }
    }
  }

    printf("The result:\n");

  for ( j = 0 ; j < length ; j++ ){
    printf("%d  ", array[j]);
  }
}

int main(void){
    int array[] = {1,4,2,-1,2,3,4,1,3,-1};
    int length = sizeof array / sizeof array[0];

    sortArray(array, length);
    printf("\n");

    return 0;
}

输出:

结果:-1 -1 1 1 2 2 3 3 4 4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31680117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档