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-安格斯·杨-0
2:35-S-埃迪·范·哈伦-0
3:08-S-比利F.吉本斯-0
3:38-S-Nikki Sixx-0
4:19-S-查理·瓦特-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");
}