// LajitteluEsim.java SJ import java.util.Date; import java.util.Random; class Kuplalajittelu { public static void main(String[] args) { // ensimmäinen komentoriviparametri: alkioiden määrä int N = 10; if (args.length > 0) N = Integer.valueOf(args[0]); // toinen parametri: tulostetaanko vai ei, >1 = tulosta boolean tulosta = false; if (args.length > 1 && (Integer.valueOf(args[1]) > 0)) tulosta = true; // kolmas parametri: järjesteyksessä vai ei // -1 : laskeva järjestys, 1 = kasvava järjestys, 0 = satunnainen int J = 0; if (args.length > 2) J = Integer.valueOf(args[2]); Integer[] taulu; long start; if (N <= 10000) { // Kuplalajittelu taulu = satunnainenTaulu(N, J, 1); if (tulosta) for (int i = 0; i < N; i++) System.out.print(taulu[i] + " "); System.out.println(); System.out.println("Kuplalajittelu alkaa"); start = (new Date()).getTime(); bubbleSort(taulu); System.out.println(" " + ((new Date()).getTime()-start) + " ms"); if (tulosta) for (int i = 0; i < N; i++) System.out.print(taulu[i] + " "); System.out.println(); } } // main() public static Integer[] satunnainenTaulu(int N, int J, int seed) { Integer[] taulu = new Integer[N]; Random r = new Random(seed); for (int i = 0; i < N; i++) { if (J == 0) taulu[i] = new Integer(r.nextInt(N*2)); else if (J > 0) taulu[i] = new Integer(i); else taulu[i] = new Integer(N-i); } return taulu; } // satunnainenTaulu() public static void bubbleSort(Comparable A[]) { for (int i = 0; i < A.length-1; i++) { for (int j = A.length-1; j > i; j--) { if (A[j-1].compareTo(A[j]) > 0) { Comparable tmp = A[j-1]; A[j-1] = A[j]; A[j] = tmp; } } } } // bubbleSort() } // class LajitteluEsim