簡體   English   中英

為什么升序排序 C++ 不能正常工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM