簡體   English   中英

C ++問題中的選擇排序

[英]Selection sort in C++ issue

我正在為我的數據結構課程編寫一個程序,但遇到一個問題,我的選擇排序似乎只運行了一次。 它用於按零件號組織陣列。

這是它的代碼:

    void sorter::selection ()
{
int i, last, large;
int temp;
for (last = maxSize-1; last >= 1; last --)  {  //maxSize = 20
large = last;
for (i=0; i < last; i++)
if (group[i].partNumber > group[large].partNumber)
large = i;
                                             }
temp = group[large].partNumber;
group[large].partNumber = group[last].partNumber;
group[last].partNumber = temp;
}

這是輸出:

Part Number     
278          
142         
427        
255          
562            
442           
980           
6          
992           
54           
550           
227          
2           
31           
24          
540           
766           
990           
101            
5          

它應該取最大值,然后將其放置在數組的最后,然后重復該操作,直到所有內容都就位為止……但事實並非如此。 有人對我在這里做錯什么有想法嗎? 謝謝!

外層for循環的右括號位於錯誤的位置。 這是為什么正確的縮進如此重要的一個很好的例子。 試試這個版本:

void sorter::selection()
{
    int i, last, large;
    int temp;
    for (last = maxSize-1; last >= 1; last --)
    {
        large = last;
        for (i=0; i < last; i++)
        {
            if (group[i].partNumber > group[large].partNumber)
                large = i;
        } // previously your outer loop ended here!
        temp = group[large].partNumber;
        group[large].partNumber = group[last].partNumber;
        group[last].partNumber = temp;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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