[英]Why Ascending Sort C++ Cant Work Properly?
如果要根據時間升序排序,源代碼中的錯誤是什么?
struct pelari { char nama[10];int jam,menit,detik,usia,total;} pelari lari[10]
int main() { int i,n,j,tmp
cout<<"Masukan banyak peserta:"; 辛>>n;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(lari[i].total>lari[j])
{
tmp=lari[j].total;
lari[j].total=lari[i].total;
lari[j]=tmp;
}
}
}
您應該使用適當的比較器調用std::sort
std::sort(std::begin(lari), std::end(lari), [](auto & lhs, auto & rhs) { return lhs.total > rhs.total; });
我認為問題在於您用來比較lari[i].total>lari[j]
的方式; 我認為您應該使用lari[i].total>lari[j].total
。 但是,深入研究,我認為“交換”也存在問題,因為你應該有:
tmp=lari[j].total;
lari[j].total=lari[i].total;
lari[i].total=tmp;
因此,代碼變為:
for(i=0;i<n;i++) {
for(j=i;j<n;j++) {
if(lari[i].total>lari[j].total) {
tmp=lari[j].total;
lari[j].total=lari[i].total;
lari[i].total=tmp;
}
}
}
試試這個。 再見!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.