SQL

Wednesday, 16 April 2014

Bubble sort


This Exercise has taken from Java How to Program 
The bubble sort presented in Fig. 7.10 is inefficient for large arrays. Make the following simple
modifications to improve the performance of the bubble sort:
a) After the first pass, the largest number is guaranteed to be in the highest-numbered element
of the array; after the second pass, the two highest numbers are “in place”; etc. Instead
of making nine comparisons on every pass, modify the bubble sort to make eight
comparisons on the second pass, seven on the third pass, etc


public class BubbleSort {
	public static void main (String args[]){
		
		int []array= {25,7,10,3,9,48,5,6};
		for (int j = 1; j <array.length; j ++){		
			for (int i = 0; i <array.length-j; i ++){
				int temp = array [i];
				if (array[i]> array [i+1]){
					array [i] = array [i+1];
					array [i+1]=temp;
				}
			}
		}
		for (int i = 0; i <array.length; i ++){
			System.out.printf("\t"+array[i]);
		}
	}
}

Ex: 7.10 Java How to Program


Use a one-dimensional array to solve the following problem: A company pays its salespeople on a commission basis. The salespeople receive $200 per week plus 9% of their gross sales for that week. For example, a salesperson who grosses $5000 in sales in a week receives $200 plus 9% of $5000, or a total of $650. Write an applet (using an array of counters) that determines how many of the salespeople earned salaries in each of the following ranges (assume that each salesperson’s salary is truncated to an integer amount):
a) $200–299
b) $300–399
c) $400–499
d) $500–599
e) $600–699
f) $700–799
g) $800–899
h) $900–999
i) $1000 and over
import java.util.Scanner;

public class Sales {
 public static void main (String args[]){
  int [] total = new int [9];
 
  Scanner input = new Scanner (System.in);
  int range;  
  int salary = 200;
  double commission = .09; 
  
  while (input.hasNext()){
   
   double income  = salary + input.nextInt()*commission;
   range = (int)income / 100;
   if (range > 9 )
    range = 10;
   ++total [range -2];
  }
  
  
 System.out.println("Range \t \t Number"); 
  for (int i = 0 ; i < total.length-1; i++){
   System.out.printf("\n$"+(200+100*i) + "- $"+(299+100*i)+"\t \t"+total[i]+"\n");
  }
  System.out.println("$1000 and over \t \t"+total[total.length-1]); 
 }
}