Welcome to Dream.In.Code
Become a Java Expert!

Join 150,194 Java Programmers for FREE! Get instant access to thousands of Java experts, tutorials, code snippets, and more! There are 2,034 people online right now. Registration is fast and FREE... Join Now!




BubbleSort method

 
Reply to this topicStart new topic

BubbleSort method

Animech
24 Sep, 2008 - 04:20 AM
Post #1

New D.I.C Head
*

Joined: 16 Sep, 2008
Posts: 8

i have a program that finds the median of a sorted array of ints. The thing is, the median and bubble sort parts have to be set up as methods. it works if it was a set number of integers, but like my last program, the user enters as many as they want. my program looks like this:

CODE
import  java.util.Scanner;

public class SortArrayMedian
{
public static void main(String args[])
{
  Scanner inp = new Scanner(System.in);
  System.out.println("Please enter as many integers as you want.");
System.out.println("Enter 0 to end.");
  int i;
int x[] = new int[100];  
if (x != null) {
  for (i = 1; i < 100; ++i) {
    x[i] = inp.nextInt();
    if(x[i] == 0)
      break;
    
     SortArrayMedian S = new SortArrayMedian();  
     S.bubbleSort (x);
     System.out.print("Sorted list of integers is ");
     for (i = 0; i < 100; ++i)
   System.out.print(" " + x[i]);
     System.out.print("\nThe median is " + S.findMedian(x));
     System.out.println();
}
}
else
   System.out.println("Insufficient heap memory");
}


public void bubbleSort(int a[]) {
  int j, k;
  for (j = 0; j < 99; j++)
      for (k = 0; k < 99; ++k)
   if (a[k] > a[k+1]) {
              int temp = a[k];
              a[k] = a[k+1];
              a[k+1] = temp;
                  }
}

public int findMedian( int b[]){
   int result = b.length % 2;
   int median = 0;
    if (result == 0) {
              int rightNumber = b.length / 2;
              int leftNumber = rightNumber - 1;
              median = (b[rightNumber] + b[leftNumber]) / 2;
              }
    
              else {
              int rightNumber = b.length / 2;
              median = b[rightNumber];
              }

              return median;
              }
}


any idea what i'm doin wrong?
User is offlineProfile CardPM
+Quote Post

Ellie
RE: BubbleSort Method
24 Sep, 2008 - 07:10 AM
Post #2

D.I.C Regular
Group Icon

Joined: 17 Jan, 2007
Posts: 428



Thanked: 4 times
Dream Kudos: 150
My Contributions
Hi,

If you don't know in advance how many numbers will be entered, you need to keep track of them. I've kept the int i for incrementing each time the user enters a number.

Then I've modified your sort and median methods slightly to take the i value as a parameter, and to only sort those elements which have been filled in your array, and then to only calculate the median on those values. Then only those values are printed. I left your methods in commented out for comparison.

If you're not meant to be using a fixed size array at all then you'll need another solution, but I guessed this was what you were going for. If you don't get anything, just post again.

CODE
import  java.util.Scanner;

public class SortArrayMedian
{
public static void main(String args[])
{
  Scanner inp = new Scanner(System.in);
  System.out.println("Please enter as many integers as you want.");
System.out.println("Enter 0 to end.");
  int i=0;
int x[] = new int[100];  
if (x != null) {
    
    x[i] = inp.nextInt();
    while (x[i] != 0){
    System.out.println("Added " + x[i] + " to position: " + i);
    i++;
    if (i >=100)
    //if(x[i] == 0)
      break;
       x[i] = inp.nextInt();
      }
    
     SortArrayMedian S = new SortArrayMedian();  
     //S.bubbleSort (x);
     S.bubbleSortSetLength(x, i);
     System.out.print("Sorted list of integers is ");
     for (int j = 0; j < i; ++j)
   System.out.print(" " + x[j]);
    // System.out.print("\nThe median is " + S.findMedian(x));
     System.out.print("\nThe median is " + S.findMedianSetLength(x, i));
     System.out.println("\n");
    
    

}
else
  System.out.println("Insufficient heap memory");
}


/*public void bubbleSort(int a[]) {
  int j, k;
//  for (j = 0; j < 99; j++)
    for (j = 0; j < a.length-1; j++)
//     for (k = 0; k < 99; ++k)
        for (k = 0; k < a.length-1; k++)
   if (a[k] > a[k+1]) {
              int temp = a[k];
              a[k] = a[k+1];
              a[k+1] = temp;
                  }
}*/

public void bubbleSortSetLength(int a[], int i) {
  int j, k;
//  for (j = 0; j < 99; j++)
    for (j = 0; j < i-1; j++)
//     for (k = 0; k < 99; ++k)
        for (k = 0; k < i-1; k++)
   if (a[k] > a[k+1]) {
              int temp = a[k];
              a[k] = a[k+1];
              a[k+1] = temp;
                  }
}

public int findMedianSetLength( int b[], int i){
   int result = i % 2;
   int median = 0;
    if (result == 0) {
              int rightNumber = i / 2;
              int leftNumber = rightNumber - 1;
              median = (b[rightNumber] + b[leftNumber]) / 2;
              }
    
              else {
              int rightNumber = i / 2;
              median = b[rightNumber];
              }

              return median;
              }
              
/*public int findMedian( int b[]){
   int result = b.length % 2;
   int median = 0;
    if (result == 0) {
              int rightNumber = b.length / 2;
              int leftNumber = rightNumber - 1;
              median = (b[rightNumber] + b[leftNumber]) / 2;
              }
    
              else {
              int rightNumber = b.length / 2;
              median = b[rightNumber];
              }

              return median;
              }*/
}

User is offlineProfile CardPM
+Quote Post

Fast ReplyReply to this topicStart new topic
Time is now: 1/9/09 04:24AM

Be Social

Dream.In.Code RSS Feed Dream.In.Code LinkedIn Group Follow Us On Twitter

Live Java Help!

Java Tutorials

Reference Sheets

Java Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month