简体   繁体   English

C ++问题中的选择排序

[英]Selection sort in C++ issue

I'm writing a program for my data structures course and I have run into an issue where my selection sort only seems to be running once. 我正在为我的数据结构课程编写一个程序,但遇到一个问题,我的选择排序似乎只运行了一次。 It is being used to organize an array by part number. 它用于按零件号组织阵列。

Here's the code for it: 这是它的代码:

    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;
}

And here's the output: 这是输出:

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

It should be taking the largest value and placing it last in the array, and repeating that until everything is in its place...but it doesn't. 它应该取最大值,然后将其放置在数组的最后,然后重复该操作,直到所有内容都就位为止……但事实并非如此。 Does anyone have ideas as to what I'm doing wrong here? 有人对我在这里做错什么有想法吗? Thanks! 谢谢!

The closing brace for your outer for loop is in the wrong spot. 外层for循环的右括号位于错误的位置。 This is a good example of why proper indentation is so important. 这是为什么正确的缩进如此重要的一个很好的例子。 Try this version: 试试这个版本:

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