Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bubble sort didn't sort

I tried to do bubble sort and still a beginner, I didn't find any errors but when I tried to sort it alphabetically it didn't sort the array.

public class Main  {

    public static void bubblesort ( String [] name) {
        String tempmemory = " na";

        for (int i = 0; i < name.length; i++) {
            for (int j = 0; j < (name.length - 1); j++) {

                if (name[j].compareTo(name[j + 1]) < 0)

                    tempmemory = name[j];
                name[j] = name[j + 1];
                name[j + 1] = tempmemory;
            }
        }
    }

    public static void main ( String [] args) {

        String [] name  = { "ciku", "eman","aina"} ;

        int i=0;

        System.out.println(" Before sort : ");
        while (i < name.length)
        {
            System.out.print ( name[i] + "  ");

            i++;
        }

        bubblesort(name);

        i=0;
        System.out.println(" \n After sort : ");
        while (i < name.length)
        {
            System.out.print ( name[i] + "  ");

            i++;
        }

}


}

How can I fix this code to correctly sort an array using bubble sort?

like image 636
naddy Avatar asked Feb 22 '26 06:02

naddy


2 Answers

Your if condition should include those 3 statements, right now it only have one statement under it i.e tempmemory = name[j];. So use {} bracket for if condition if it has multiple statement. So write if statement like this:

if (name[j].compareTo(name[j + 1]) < 0) {
    tempmemory = name[j];   
    name[j] = name[j + 1];
    name[j + 1] = tempmemory; 
}
like image 99
GoAkshay Avatar answered Feb 24 '26 19:02

GoAkshay


This chunk of code:

            if (name[j].compareTo(name[j + 1]) < 0)

                tempmemory = name[j];
            name[j] = name[j + 1];
            name[j + 1] = tempmemory;

is obviously wrong.

Hint: use { and } to fix it.

like image 38
Employed Russian Avatar answered Feb 24 '26 19:02

Employed Russian