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