所以这是我用于选择排序的代码,由于某种原因,我在其中交换两个元素的部分不起作用,并给出了各种奇怪的输出。
vector<int> vect{45,32,12,1,67,34,2,15,33,40};
for(auto i=vect.begin();i<vect.end()-1;i++){
auto min=i;
for(auto j=i+1;j<vect.end();j++)
{
if(*min>*j)
{
min=j;
}
}
*i=*i+*min;
*min=*i-*min;
*i=*i-*min;
}
for(int x:vect)
{
cout<<x<<" ";
}
但是当我使用其他交换方式时,输出正确。
int temp=*min;
*min=*i;
*i=temp;
而不是:-
*i=*i+*min;
*min=*i-*min;
*i=*i-*min;
[请帮助我找出问题出在哪里。
您总是需要一个临时变量来交换两个元素。就像您要交换两个杯子一样,您需要第三个。