编码问题

时间:2010-09-26 10:29:53

标签: c++

  

可能重复:
  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。 我的代码中有什么问题?

5 个答案:

答案 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;
        } 
    }
}