可能重复:
Sorting in arrays
int A[5]={1,5,3,2,4};
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(A[j]>A[j+1])
{
int t=A[j];
A[j]=A[j+1];
A[j+1]=t;
}
}
}
for(i=0;i<5;i++)
cout<<A[i];
所需的输出必须是1,2,3,4,5 但我的输出是0,1,2,3,4。 我的代码中有什么问题?
答案 0 :(得分:3)
首先,学会正确缩进。这并不难。其次,看起来你正在制作排序功能。
问题是你使用变量j来表示for循环。别。将一个更改为k或另一个变量。我假设你试图用j + 1引用第二个j。这只是将j加1。
请问,您有编码经验吗?
您应该已经指定了代码的问题,您的期望以及您获得的内容。
答案 1 :(得分:2)
看起来你正在尝试冒泡排序,你为什么不read up on it。我相信你可以自己动手。
答案 2 :(得分:0)
您可以使用Sort代替,效果很好!
int A[5]={1,5,3,2,4};
vector<int> vec(A, A+5);
sort(vec.begin(), vec.end());
答案 3 :(得分:0)
您需要将内循环限制为&lt; 4:
int A[5]={1,5,3,2,4};
for(int i=0;i<5;i++){
for(int j=0;j<4;j++){
if(A[j]>A[j+1])
{
int t=A[j];
A[j]=A[j+1];
A[j+1]=t;
}
}
}
for(i=0;i<5;i++)
cout<<A[i];
答案 4 :(得分:0)
您的程序不会产生该输出。当j == 4时,它将在A [j + 1]处死亡。在最后一个循环中,你需要写入(int i = 0; i&lt; 5; i ++)。其次,你的逻辑没有多大意义。如果要对数组进行排序,则代码为:
for(int i = 0; i < 5; i++){
for(int j = i + 1; j < 5; j++){
if(A[j] < A[i])
{
int t = A[j];
A[j] = A[i];
A[i] = t;
}
}
}