繁体   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