C中的Bubble排序,但需要将任何带有1的东西一直移动到底部.我可以使用撤回的骑手来访问它


void sortraceTime(struct RiderInfo *riders, int size){
struct RiderInfo swap;
int i = 0, j = 0, n = size;
//Sorting using the Bubble sort technique
for (i = 0; i < n; ++i){
for (j = i + 1; j < n; ++j){
if (riders[i].raceTime > riders[j].raceTime){
swap = riders[i];
riders[i] = riders[j];
riders[j] = swap;
}//end if
}//end inner for
}//end outer for
printf("n");
printf("--- Riders sorted by raceTime! ---n");
printf("n");
}

输出---------------------------------------------------------------------

0:24-S-Jocelyn Lovell-1

1:50--S--Angus Young--0

2:35-S-Eddie Van Halen--0

3:08-S——Billy F.Gibbons——0

3:38-S-Nikki Sixx--0

4:19-S-Charlie Watt--0

您想要进行多关键字排序。

只需添加一个额外的状态变量。

我已经重构了您的代码,并对其进行了一些清理。注意,因为你的代码块有点稀疏,我无法测试这个:

void
sortraceTime(struct RiderInfo *riders, int size)
{
struct RiderInfo swap;
struct RiderInfo *lhs;
struct RiderInfo *rhs;
int i;
int j;
int n = size;
int needswap;
// Sorting using the Bubble sort technique
for (i = 0; i < n; ++i) {
lhs = &riders[i];
for (j = i + 1; j < n; ++j) {
rhs = &riders[j];
needswap = 0;
if (lhs->withdrawn > rhs->widthdrawn)
needswap = 1;
if (lhs->raceTime > rhs->raceTime)
needswap = 1;
if (needswap) {
swap = *lhs;
*lhs = *rhs;
*rhs = swap;
}
}
}
printf("n");
printf("--- Riders sorted by raceTime! ---n");
printf("n");
}

相关内容

最新更新