gpt4 book ai didi

c - 如何修复 C 中的冒泡排序函数?

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

我将一组航类信息和航类计数传递给排序函数。航类数组中包含航类 ID,例如(H100.15005),我的目标是根据航类 ID 对航类信息升序排序。如何修复冒泡排序功能?

语言:C 平台:Mac OS X 操作系统上的虚拟机:Ubuntu(64 位)16.04 LTS 编辑器:Vim 7.4 限制:必须使用基本排序算法。

这是排序之前和之后的输出以及代码:

    Initial Flights
Flight Id From Dest Depart Avail Unit Price
H100.15005 SAT HOU 08:00 4 65.00
H111.15009 SAT HOU 17:00 10 65.00
H555.15022 SAT DFW 08:00 70 70.00
H444.15015 ATL NYC 08:00 10 130.00
H200.15010 ATL HOU 08:00 20 120.00
H222.15005 HOU ATL 10:00 15 125.00
H333.15010 ATL NYC 13:00 20 130.00
H444.15001 ATL NYC 08:00 10 130.00
H100.15006 SAT HOU 08:00 12 65.00
H333.15012 ATL NYC 12:55 60 130.00
H666.15020 NYC ATL 01:45 50 140.00
Sorted Flights
Flight Id From Dest Depart Avail Unit Price
H100.15005 SAT HOU 08:00 4 65.00
H111.15009 SAT HOU 17:00 10 65.00
H555.15022 SAT DFW 08:00 70 70.00
H444.15015 ATL NYC 08:00 10 130.00
H200.15010 ATL HOU 08:00 20 120.00
H222.15005 HOU ATL 10:00 15 125.00
H333.15010 ATL NYC 13:00 20 130.00
H444.15001 ATL NYC 08:00 10 130.00
H100.15006 SAT HOU 08:00 12 65.00
H333.15012 ATL NYC 12:55 60 130.00
H666.15020 NYC ATL 01:45 50 140.00



void sortFlights(Flight flightM[], int iFlightCnt) {
int i;
int j;
Flight flightIdTemp;


for(i = 0; i < (iFlightCnt - 1); i++) {
for(j = (iFlightCnt - 1); j > i; j--) {
if(flightM[j-1].szFlightId > flightM[j].szFlightId) {
flightIdTemp = flightM[j-1];
flightM[j-1] = flightM[j];
flightM[j] = flightIdTemp;
}
}
}
}

最佳答案

变量szFlightId可能是一个字符串,您想要比较两个字符串的内容。这不适用于 C 中的 > 运算符,它只会比较内存地址。您需要改用函数strcmp()

if (strcmp(flightM[j-1].szFlightId, flightM[j].szFlightId) > 0)

(实际上我们不知道类型,但是前缀sz经常被用来标记以零结尾的字符串。微软的一些匈牙利开发人员引入了这个约定,因此被称为匈牙利表示法。)

关于c - 如何修复 C 中的冒泡排序函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161977/

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