C 中使用指针的结构冒泡排序

2024-05-17

我想使用 C 中的冒泡排序算法和指针对结构数组进行排序。 我有一个汽车结构:

typedef struct{
    char model[30];
    int hp;
    int price;
}cars;

我为 12 个项目分配内存:

cars *pointer = (cars*)malloc(12*sizeof(cars));

并从文件中读取数据:

for (i = 0; i <number ; i++) {
    fscanf(file, "%s %i %i\n", (pointer+i)->model, &(pointer+i)->hp, &(pointer+i)->price);
}

我传递指针ptr to bubbleSort功能:

bubbleSort(pointer, number);

这是我的bubbleSort功能:

void bubbleSort(cars *x, int size) {
    int i, j;
    for (i=0;i<size-1;i++) {
    int swapped = 0;
    for (j = 0; j < size - 1 - i; j++) {
        if ( (x+i)->hp > (x+j+1)->hp ) {
            cars *temp = (x+j+1);
            x[j+1] = x[j];
            x[j] = *temp;
            swapped = 1;
        }
    }
        if (!swapped) {
        //return;
        }
    }
}

问题是我不知道如何使用指针交换项目。


考虑以下排序功能的解决方案:

void bubbleSort(cars *x, int size) 
{
    int i, j;
    for (i = 0; i < size-1; i++) 
    {
        for (j = 0; j < size-1-i; j++) 
        {
            if ( x[j].hp > x[j+1].hp ) 
            {
               cars temp = x[j+1];
               x[j+1] = x[j];
               x[j] = temp;
            }
        }
    }
}

问题出在数据交换部分

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中使用指针的结构冒泡排序 的相关文章

随机推荐