在输入中我必须指定数组及其元素,输出应采用下面给出的形式
输入
5
2 4 6 8 3
示例输出
2 4 6 8 8
2 4 6 6 8
2 4 4 6 8
2 3 4 6 8
这是我的输出
2 4 6 8 8
2 4 6 6 8
2 4 4 6 8
2 4 3 6 8
2 3 3 6 8
2 3 3 6 8
int main() {
int* a=0;
int n,x;
std::cout<<"Enter size ";
std:: cin>>n;
std::cout<<"Enter elements ";
a=new int[n];
for(int i=0;i<n;i++){
std::cin>>x;
a[i]=x;
}
int q=a[n-1];
for(int i=n;i>=0;i--){
if(a[i-2]>q)
{ a[i-1]=a[i-2];
}else
a[i]=q;
for(int j=0;j<n;j++ )
{ std::cout<<a[j];cout<<" ";
}
cout<<" \n ";
}
//for(int j=0;j<n;j++ ){std::cout<<a[j];}
getch();
}
我做错了什么?
答案 0 :(得分:2)
自i
一直到0
。然后i-2
可以转到-2
。因此,该行在数组开始之前进行索引,这是未定义的行为:
if(a[i-2]>q)
在这里,你要分配数组中的值而不记住旧值是什么。
}else
a[i]=q;
因此,您正在丢失信息,因此某些事情会出错,因为排序不应该破坏信息。