百分百自己编的程序,越来越觉得编程很好玩了。
但这算是第一次自己用vector这种不是那么无脑的方法编程,只能最多对3个数进行排序wwwww
今天我要回去搬宿舍了,等明天有时间,我一定要把bug找到!
----------------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------------
就在刚刚我debug出来了!
【问题】之前的问题就在于我每一次按从小到大的顺序插入一个数时,由于这个数就在数组中,所以当我插入后整个数组就会多一个数,这个数之后的数就会统统向后移一位。所以我每次输入5个数的时候,就会看到第三个数在第四位上重复了,而后面的数在第6、7位置上,显示不出来,所以也就出现了后面的数显示不出来的情况。
【解决方法】每插入一个数,把这个数之前所在位置上的给删除(erase),问题就解决啦!
#include <iostream>
#include <vector> using namespace std; vector<int>a();
void sortt(int p,int q,int m,int k,int num)
{
if(m<a[p]) {
a.insert(a.begin()+p,m);
a.erase(a.begin()+k);//按顺序插入之后,要把原来位置上的a[]给删除掉,才是一个完整的排序过程
}
else if(m>a[q]) {
a.insert(a.begin()+q+1,m);
a.erase(a.begin()+k);
}
else{
if(q-p==1){
a.insert(a.begin()+q,m);
a.erase(a.begin()+k);
}
else{
sortt(p+1,q-1,m,k,num);
}
}
} int main() {
int num;
int cnt=;
cin >> num;
for(int i=;i<num;++i)
cin >> a[i];
if(a[]>a[])
{
int temp;
temp=a[];
a[]=a[];
a[]=temp;
}
for(int i=;i<num;++i){
sortt(,cnt,a[i],i+1,num);
cnt++;
}
for(int i=;i<num;++i)
cout << a[i] << " ";
return ;
}