001package examination3; 002 003/** 004 * Add Javadoc comments to each of the methods 005 * (f0 to f8) in this class. 006 * 007 * <p> 008 * This code is related to our study of 009 * sorting algorithms. 010 * </p> 011 * 012 * @author Your Name 013 * @version 30 January 2015 014 */ 015public class Sort { 016 017 public static final int SIZE = 12; 018 019 public Sort() { 020 double[] data = f0(SIZE); 021 f1(data); 022 f8(data); 023 f1(data); 024 025 System.out.println(); 026 027 data = f0(SIZE); 028 f1(data); 029 f7(data); 030 f1(data); 031 } // Sort() 032 033 public final double[] f0(int n) { 034 double[] result = new double[n]; 035 for (int i = 0; i < result.length; i++) { 036 result[i] = Math.random(); 037 } // for 038 return result; 039 } // f0( int ) 040 041 public final void f1(double[] data) { 042 for (double x : data) { 043 System.out.printf("%6.2f ", x); 044 } // for 045 System.out.println(); 046 } // f1( double [] ) 047 048 public final void f2(double[] data, int prefixLength) { 049 System.out.print("["); 050 for (int i = 0; i < prefixLength; i++) { 051 System.out.printf("%6.2f ", data[i]); 052 } // for 053 System.out.print("]["); 054 for (int i = prefixLength; i < data.length; i++) { 055 System.out.printf("%6.2f ", data[i]); 056 } // for 057 System.out.println("]"); 058 } // f2( double [] ) 059 060 public final void f3(double[] data, int i, int j) { 061 double temp = data[i]; 062 data[i] = data[j]; 063 data[j] = temp; 064 } // f3( double [], int, int ) 065 066 public final int f4(double[] data, int start) { 067 int bestGuessSoFar = start; 068 for (int i = start + 1; i < data.length; i++) { 069 if (data[i] < data[bestGuessSoFar]) { 070 bestGuessSoFar = i; 071 } // if 072 } // for 073 return bestGuessSoFar; 074 } // f4( double [], int ) 075 076 public final void f5(double[] data, int i, int j) { 077 double temp = data[i]; 078 for (int k = i; k > j; k--) { 079 data[k] = data[k - 1]; 080 } // for 081 data[j] = temp; 082 } // f5( double [], int, int ) 083 084 public final int f6(double[] data, int i) { 085 int j = i; 086 while (j > 0 && data[j - 1] > data[i]) { 087 j--; 088 } // while 089 return j; 090 } // f6( double [], int ) 091 092 public final void f7(double[] data) { 093 for (int i = 0; i < data.length; i++) { 094 f2(data, i); 095 int j = f4(data, i); 096 f3(data, i, j); 097 } // for 098 } // f7( double [] ) 099 100 public final void f8(double[] data) { 101 for (int i = 0; i < data.length; i++) { 102 f2(data, i); 103 int j = f6(data, i); 104 //System.out.printf( 105 // "move data[%2d] to data[%2d] (%6.2f -> %6.2f)\n", 106 // i, j, data[i], data[j] ); 107 f5(data, i, j); 108 } // for 109 } // f8( double [] ) 110 111} // Sort