1

While sorting an array for ex: A[5]={1,4,5,3,2} the output must be 1,2,3,4,5 in ascending order. in using the concept of bubble sorting my output is 0,1,2,3,4 what would be the problem in my code

  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];
2
  • 7
    Perhaps you have indexes mixed up with values? We've no way of knowing because there's no example code provided. Commented Sep 25, 2010 at 17:52
  • 3
    unless you show us your code there is no way of knowing. Commented Sep 25, 2010 at 17:55

4 Answers 4

3

You need to limit your inner loop to <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];
Sign up to request clarification or add additional context in comments.

Comments

2

Why not use the STL sort?

#include <algorithm>

std::sort(A, A+5);

3 Comments

The "+5" part is slippery thuogh... If A is an array or vector, then one can write A.size(), but for C-style array the preferred way probably is to #define ARRAYSIZE(A) (sizeof(A)/sizeof(A[0])) and then call std::sort( A, A + ARRAYSIZE(A) );
@ArunSaha: hardly. That breaks silently if A is a pointer. If you want to do something like this, use an inline template. Also, I'm not sure why this was downvoted. Seems a sensible answer in the general case. Of course, if the question is a part of a homework assignment or something, the STL version is probably out, but we don't know that.
@jaif: You are right, if A is a pointer then ARRAYSIZE does not work. But, that's changing the problem definition too much, in the problem A was not a pointer :). Also I mentioned .size() can be used whenever possible. BTW, it's not me who downvoted.
0

Perhaps you are printing i instead of A[i] in the printing loop, as in

for( int i = 0; i < N; i++ ) {
    cout << i << ",";          // by mistake, printing i instead of A[i]
}

Comments

0

Is there a reason you are doing bubble sort, other then trying to learn it? It's one of the slower sorts.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.