I need to generate 500 random numbers from 200 to 1200 and use insertion to sort them. This is probaly simple for you guys but im confused. My problem is when i run the program all I get is 500 0's. Anyone help me out?

public class insertion{
public static void main(String arg[]){
	int n = 500;
	int[] a = new int[n];
	System.out.println("\n\nInput values:");
	for(int i=0;i<n;i++){
		System.out.print(" "+a[i]);
	for (int i = 1; i < a.length; i++) {
	    int j = i;
	    int B = 200 + (int)(Math.random() * ((1200 - 200) + 1));
	    B = a[i];
	    while ((j > 0) && (a[j-1] > B)) {
	        a[j] = a[j-1];
	    a[j] = B;           
	System.out.println("\n\n\nSorted values:");
	for(int i=0;i<a.length;i++)
	System.out.print(" "+a[i]);
6 Years
Discussion Span
Last Post by JamesCherrill

Line 11, using Math.random() is dangerous because of the type casting. Use nextInt() of Random class instead.

Random r = new Random();
int B = 200+r.nextInt(1000);  // between 200~1200

You forget to give a random value to your a[0] before you go inside the loop. Also, your line 12, should it be that way? The reason is that your line 12 will always assign '0' to B and overwrite whatever B value you computed...

If you track your loop, you would see why it results that way... Write the value down for each a[j] and a[j-1] while you are going through each j.

Votes + Comments
helped me

your Line 7 has a problem
you have created an array which is a[500];
in which there is no VALUE
and you are printing that instead of taking values
so check that


Hi javaflasher.
No disrespect, but have you checked a calendar recently? That problem was posted March 3rd. The OP will have either solved it or given up many months ago.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.