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