# Logic Error

I think I have a logic error in here but I can't figure out what it is, anyone have a clue?

The method is to sort an array of double values.
/** The method for sorting the numbers */
static void selectionSort(double[] list) {
for (int i = list.length - 2; i >= 1; i--) {
// Find the maximum in the list[0..i]
double currentMax = list[0];
int currentMaxIndex = 0;

for (int j = 1; j <= i; j++) {
if (currentMax < list[j]) {
currentMax = list[j];
currentMaxIndex = j;
}
}

// Swap list[i] with list[currentMaxIndex] if necessary;
if (currentMaxIndex != i) {
list[currentMaxIndex] = list[i];
list[i] = currentMax;
}
}
}
}
###### Who is Participating?

Commented:
>  list.length - 2

at 1st glance it would appear that should be  list.length - 1
0

Commented:
And your swap needs to be inside the for loop:

static void selectionSort(double[] list) {
for (int i = list.length - 1; i >= 1; i--) {
// Find the maximum in the list[0..i]
double currentMax = list[0];
int currentMaxIndex = 0;

for (int j = 1; j <= i; j++) {
if (currentMax < list[j]) {
currentMax = list[j];
currentMaxIndex = j;
}

// Swap list[i] with list[currentMaxIndex] if necessary;
if (currentMaxIndex != i) {
list[currentMaxIndex] = list[i];
list[i] = currentMax;
}
}
}
}
0

Commented:
try this program logic...seudo code..

void sortArray()
{
for(i=0; i<MAX; i++)
{
for(j=i+1;j<MAX;j++)
{
sort(number[i],number[j]);

number[i]=a;
number[j]=b;
}
}
}

void shuffle()
{
for(i=0; i<MAX; i++)
{
j=(int)(Math.random()*MAX);

if(i!=j)
{
int temp=number[i];
number[i]=number[j];
number[j]=temp;
}
}
}

R.K

0

Associate Director - Product EngineeringCommented:
>>  sort(number[i],number[j]);

BTW, where is this method in your code?

>> for(i=0; i<MAX; i++)

could be:

for ( i = 0 ; i < MAX - 1 ; i ++ )

Also, Job4Suprmn, your method is called selectionSort () but it doesn't actually implement selection-sort. The correct algo would be:

for ( int i = 0 ; i < array.length - 1 ; i ++ )
for ( int j = i + 1 ; j < array.length ; j ++ )
if ( array[i] > array[j] )
// swap them
0

Commented:
:°)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.