DerStrebsame
DerStrebsame

Reputation: 1

Java Insertion Sort doesnt sort

I have written a java sorting algorithm by insertion, the code compiles but doesnt sort:(. If anyone could point out any flaws, Id be very thankful, Java doesnt...

public class Sort {

public static int[] sort(int[] x) {
    int[] y = new int[x.length];
    for(int i = 0; i < x.length; ++i) {
        int j = 0;
        while (y[j] < x[i] && j < i) ++j;
        for (int k = i-1; k >= j; --k) y[k+1] = y[k];
        y[j]=x[i];
    }   
    return y;
}

public static void main(String[] args) {
    int[] size = new int[10];
    for(int k=0; k<size.length; ++k ) {
        size[k]=(int)(Math.random()*20);
        System.out.println(size[k]);
    }
    System.out.println(sort(size));
}}

Upvotes: 0

Views: 125

Answers (3)

rzwitserloot
rzwitserloot

Reputation: 102903

[I@39ed3c8d is returned by invoking toString() on an int array, which you then print with System.out.println.

You presumably want System.out.println(Arrays.toString(sort(size))); instead.

Upvotes: 2

Saurabh Nigam
Saurabh Nigam

Reputation: 823

That random is result of: System.out.println(sort(size));

Do this instead:

size = sort(size);
   for(int k=0; k<size.length; ++k ) {
    
    

 System.out.print(size[k] + " " );
}

Upvotes: 0

Idriss Riouak
Idriss Riouak

Reputation: 95

You are printing the reference of size i.e., [I@39ed3c8d .

This should help you to understand:

public class Sort {

public static int[] sort(int[] x) {
    int[] y = new int[x.length];
    for(int i = 0; i < x.length; ++i) {
        int j = 0;
        while (y[j] < x[i] && j < i) ++j;
        for (int k = i-1; k >= j; --k) y[k+1] = y[k];
        y[j]=x[i];
    }   
    return y;
}

public static void main(String[] args) {
    int[] size = new int[10];
    System.out.println("Befor sorting");
    for(int k=0; k<size.length; ++k ) {
        size[k]=(int)(Math.random()*20);
        System.out.print(size[k]);
        System.out.print(" ");
    }
    size = sort(size);

    System.out.println("\nAfter sorting");
    for(int i = 0; i<size.length; i++){
        System.out.print(size[i]);
        System.out.print(" ");
    }
}}

Upvotes: 0

Related Questions