import java.io.*;
import java.util.Vector;

class DekeBubbleSort {

	public static void main(String[] args) {
		Vector v = new Vector();
		boolean getting_input = true;
		String inputData = null;
		
		System.out.println("Enter some numbers to be sorted, one number per line.");
		System.out.println("Enter a blank line when finished.");
		
		BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
		
		//get input
		while (getting_input == true) {
			try {
				inputData = r.readLine();
				try {
					v.add(new Integer(Integer.parseInt(inputData)));
				} catch (java.lang.NumberFormatException e) {
					getting_input = false;
					System.out.println("Finished getting input.");
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		//prompt for sort type
		System.out.println("Enter 1 to sort in ascending order.");
		System.out.println("Enter 2 to sort in descending order.");
		try {
			inputData = r.readLine();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//call sort function
		if (inputData.charAt(0) == '1') {
			System.out.println("Sorting data in ascending order.");
			v = sortAscending(v);
		} else if (inputData.charAt(0) == '2') {
			System.out.println("Sorting data in descending order.");
			v = sortDescending(v);
		} else {
			System.out.println("No sorting option selected. Printing original input.");
		}
		
		//print sorted data
		for (int i = 0; i < v.size(); i++) {
			System.out.println(v.get(i));
		}
		
	}


	private static Vector sortDescending(Vector v) {
		//copy from vector to array
		int[] x = new int[v.size()];
		for (int i = 0; i < v.size(); i++) {
			Integer m = (Integer) v.get(i);
			x[i] = m.intValue();
		}
		
		//sort array
		for (int i = 0; i < v.size()-1; i++) {
			for (int j = 0; j < v.size()-i-1; j++) {
				if (x[j+1] > x[j]) {
					int tmp = x[j];
					x[j] = x[j+1];
					x[j+1] = tmp;
				}
			
			}
		}
		
		  //copy from array back to vector
		  v = null;
		  v = new Vector();
		  for (int i = 0; i < x.length; i++) {
			  v.add(new Integer(x[i]));
		  }
		
		  return v;
		
	}


	private static Vector sortAscending(Vector v) {
		//copy from vector to array
		int[] x = new int[v.size()];
		for (int i = 0; i < v.size(); i++) {
			Integer m = (Integer) v.get(i);
			x[i] = m.intValue();
		}
		
		//sort array
		for (int i = 0; i < v.size()-1; i++) {
			for (int j = 0; j < v.size()-i-1; j++) {
				if (x[j+1] < x[j]) {
					int tmp = x[j];
					x[j] = x[j+1];
					x[j+1] = tmp;
				}
				
			}
		}
		
		//copy from array back to vector
		v = null;
		v = new Vector();
		for (int i = 0; i < x.length; i++) {
			v.add(new Integer(x[i]));
		}
		
		return v;
		
	}
}
