August 29th, 2012, 03:56 PM
#1
Sorting problems
HI I just started learning c++. Below is the bubble_sorting program I wrote. Complied no error under eclipse(Ubuntu). But the result is not right.
What is happening is, no matter what input numbers I provided, after sorting, the smallest number would be set to zero. Please, can anyone point out where did I do wrong. Many thanks in advance!
//start of the program
//Bubble_sorting
#include <iostream>
using namespace std;
void BubbleSort(int *list,int len)
{
int i,j,temp;
for(i=0;i<len;i++)
for(j=0;j<len-i;j++)
{
if(list[j]>list[j+1])
{
temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
}
}
}
int main ()
{
int len;
cout<<"input the number of int to sort"<<endl;
cin>>len;
int *p = new int[len];
cout<<"Input ten number:";
for(int i=0;i<len;i++)
cin>>p[i];
cout<<endl;
cout<<"Before sorting: ";
for(int i=0;i<len;i++)
cout<<p[i]<<" ";
cout<<endl;
BubbleSort(p,len);
cout<<"After sorting: ";
for(int i=0;i<len;i++)
cout<<p[i]<<" ";
cout<<endl;
cout<<p[0]<<endl;
cout<<endl;
delete[] p;
p = NULL;
return 0;
}
August 29th, 2012, 04:04 PM
#2
Re: Sorting problems
You have bufferoverflows in your bubblesort.
And please use CODE tags when posting code.
Kurt
August 29th, 2012, 04:12 PM
#3
Re: Sorting problems
Thanks Kurt! Can you be more specific?
August 29th, 2012, 04:32 PM
#4
Re: Sorting problems
Originally Posted by
rocketjumper
Thanks Kurt! Can you be more specific?
Code:
for(j=0;j < len-i;j++ )
Assume len is 10 and i happens to be 0. That loop translates to this:
Code:
for(j=0;j < 10; j++)
So you will loop from 0 to 9. But your code has this:
Code:
if( list[j] > list[j+1])
Which translates to this on the last iteration of the loop
Code:
if (list [9] > list[10])
Do you see a problem? You're accessing an invalid array element (list[10]).
Regards,
Paul McKenzie
August 29th, 2012, 04:39 PM
#5
Re: Sorting problems
Thanks Paul! That makes sense now! Just modify the inner for loop as
Code:
for(j=0;j<len-i;j++)
will solve the problem! Thanks for explaining this to me
August 29th, 2012, 04:41 PM
#6
Re: Sorting problems
I mean:
Code:
for(j=0;j<len-i-1;j++)
Tags for this Thread
Posting Permissions
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Rules
Click Here to Expand Forum to Full Width
Bookmarks