gpt4 book ai didi

C-为什么结构数组的冒泡排序会跳过数组中的第一个元素?

转载 作者:行者123 更新时间:2023-11-30 20:36:29 24 4
gpt4 key购买 nike

有谁知道为什么这种排序不对结构体数组中的第一个元素进行排序?下面是结构体、排序和一些示例输入输出的代码。我已经排除了填充数组的代码,因为我在排序之前通过打印数组知道它已正确填充。

struct Record
{
char *firstName;
char *lastName;
char *GPA;
unsigned int ID;
};

void newList(struct Record * Records, int amount, char* name)
{
int i;
int j;
struct Record tempR;
FILE *fp;
unsigned int temp;
//Order Array
for(i=0;i<amount;i++)
{
for(j=0;j<amount-1;j++)
{
if(strcmp(Records[j].firstName,Records[j+1].firstName)<0)
{
tempR=Records[j];
Records[j]=Records[j+1];
Records[j+1]=tempR;
}
}
}
//Make New Fle with Ordered Array
fp=fopen(name, "w+");
for(i=0;i<amount;i++)
{
fprintf(fp,"%s, %s, %s, %d, Records[i].firstName,Records[i].lastName,
Records[i].GPA,Records[i].ID);
}
}

此代码的示例输入和输出如下输入:

Yblwtjbvtz,Eoztbzoqnz,2.6,1123268861 
Blmhwgzjdd,Ojwfnlislc,3.1,1712113924
Gkmkbnotic,Mhzcakkugv,3.3,1966045151
Zsrwqdwkfo,Nciqixcamr,2.1,212426241
Vrekafrafk,Ixylzenhlc,2.2,297694159
Kzkaxpoeqg,Syawkuqbew,3.4,104209687
Ekdcfsifrw,Apvrwfshqm,1.4,799470314
Iybmcotvpf,Eqvcorjntu,0.6,1748600414
Jsfwiydnyt,Rhyaabwfdr,2.2,104800253
Mfqrukoytp,Urjsjcloau,3.8,1240702350"

输出:

Yblwtjbvtz, Eoztbzoqnz, 2.6, 1123268861 
Zsrwqdwkfo, Nciqixcamr, 2.1, 212426241
Vrekafrafk, Ixylzenhlc, 2.2, 297694159
Mfqrukoytp, Urjsjcloau, 3.8, 1240702350
Kzkaxpoeqg, Syawkuqbew, 3.4, 104209687
Jsfwiydnyt, Rhyaabwfdr, 2.2, 104800253
Iybmcotvpf, Eqvcorjntu, 0.6, 1748600414
Gkmkbnotic, Mhzcakkugv, 3.3, 1966045151
Ekdcfsifrw, Apvrwfshqm, 1.4, 799470314
Blmhwgzjdd, Ojwfnlislc, 3.1, 1712113924

最佳答案

这是一个用 C 语言编写的冒泡排序算法示例。

for (size_t c = 0 ; c < ( n - 1 ); c++)
{
for (size_t d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}

所以发布的代码应该实现相同的算法,只是使用不同的变量/数组名称

关于C-为什么结构数组的冒泡排序会跳过数组中的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com