Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.53 KB | None | 0 0
  1. import java.io.FileInputStream;
  2. import java.io.ObjectInputStream;
  3. import java.util.Vector;
  4.  
  5. public class classExchangesort {
  6.     private Object[] arrElements = null;
  7.    
  8.     public void read(String strPath) {
  9.         ObjectInputStream oisElements = null;
  10.         Vector<Object> vecElements = new Vector<Object>();
  11.        
  12.         try {
  13.             oisElements = new ObjectInputStream(new FileInputStream(strPath));
  14.            
  15.             do {
  16.                 Object objectElement = oisElements.readObject();
  17.                
  18.                 if (objectElement == null) {
  19.                     continue;
  20.                 }
  21.                
  22.                 vecElements.add(objectElement);
  23.             } while (true);
  24.         } catch (Exception e) {
  25.         }
  26.        
  27.         this.arrElements = vecElements.toArray(new Object[0]);
  28.        
  29.         try {
  30.             oisElements.close();
  31.         } catch (Exception e) {
  32.         }
  33.     }
  34.    
  35.     public int readMatNr(Object objGetter) {
  36.         if (objGetter instanceof Student_MatNr) {
  37.             return ((Student_MatNr) objGetter).getMatNr();
  38.         }
  39.        
  40.         if (objGetter instanceof Student_Voll) {
  41.             return ((Student_Voll) objGetter).getMatNr();
  42.         }
  43.        
  44.         return 0;
  45.     }
  46.    
  47.     public void sort() {
  48.         long longTimestamp = System.nanoTime();
  49.        
  50.         for (int intForLeft = 1; intForLeft < this.arrElements.length; intForLeft += 1) {
  51.             for (int intForRight = this.arrElements.length - 1; intForRight > intForLeft - 1; intForRight -= 1) {
  52.                 if (this.sortCompare(this.arrElements[intForRight - 1], this.arrElements[intForRight]) > 0) {
  53.                     this.sortExchange(intForRight - 1, intForRight);
  54.                 }
  55.             }
  56.         }
  57.        
  58.         longTimestamp = System.nanoTime() - longTimestamp;
  59.        
  60.         System.out.println("Took " + longTimestamp + " ns.");
  61.     }
  62.    
  63.     public int sortCompare(Object objLeft, Object objRight) {
  64.         int intMatNrLeft = this.readMatNr(objLeft);
  65.         int intMatNrRight = this.readMatNr(objRight);
  66.        
  67.         return intMatNrLeft - intMatNrRight;
  68.     }
  69.    
  70.     public void sortExchange(int intLeft, int intRight) {
  71.         Object objectTemp = null;
  72.        
  73.         objectTemp = this.arrElements[intLeft];
  74.         this.arrElements[intLeft] = this.arrElements[intRight];
  75.         this.arrElements[intRight] = objectTemp;
  76.     }
  77.    
  78.     public void print() {
  79.         for (int intForCurrent = 0; intForCurrent < this.arrElements.length; intForCurrent += 1) {
  80.             System.out.println(this.readMatNr(this.arrElements[intForCurrent]));
  81.         }
  82.     }
  83.    
  84.     public void debug() {
  85.         System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  86.         System.out.println("+ \t\t\t\t\t\t + \tM\tC\t +");
  87.         System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  88.         System.out.println("+ \t" + this.debugPrint("\t", -1, -1) + " + \t0\t0\t +");
  89.         System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  90.         System.out.println();
  91.         System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  92.        
  93.         int intMoves = 0;
  94.         int intComparisons = 0;
  95.  
  96.         for (int intForLeft = 1; intForLeft < this.arrElements.length; intForLeft += 1) {
  97.             for (int intForRight = this.arrElements.length - 1; intForRight > intForLeft - 1; intForRight -= 1) {
  98.                 intComparisons += 1;
  99.                
  100.                 System.out.println("+ \t" + this.debugPrint("\t", intForRight - 1, intForRight) + " + \t0\t1\t +");
  101.                
  102.                 if (this.sortCompare(this.arrElements[intForRight - 1], this.arrElements[intForRight]) > 0) {
  103.                     this.sortExchange(intForRight - 1, intForRight);
  104.                    
  105.                     intMoves += 3;
  106.                    
  107.                     System.out.println("+ \t" + this.debugPrint("\t", -1, -1) + " + \t3\t0\t +");
  108.                 }
  109.             }
  110.            
  111.             System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  112.         }
  113.        
  114.         System.out.println();
  115.         System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  116.         System.out.println("+ \t" + this.debugPrint("\t", -1, -1) + " + \t" + intMoves + "\t" + intComparisons + "\t +");
  117.         System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  118.     }
  119.    
  120.     public String debugPrint(String strDelimiter, int intHighlightLeft, int intHighlightRight) {
  121.         String strResult = new String();
  122.        
  123.         for (int intForCurrent = 0; intForCurrent < this.arrElements.length; intForCurrent += 1) {
  124.             if (intForCurrent == intHighlightLeft) {
  125.                 strResult += this.readMatNr(this.arrElements[intForCurrent]) + "<-" + strDelimiter;
  126.                
  127.                 continue;
  128.             }
  129.            
  130.             if (intForCurrent == intHighlightRight) {
  131.                 strResult += this.readMatNr(this.arrElements[intForCurrent]) + "<-" + strDelimiter;
  132.                
  133.                 continue;
  134.             }
  135.            
  136.             strResult += this.readMatNr(this.arrElements[intForCurrent]) + strDelimiter;
  137.         }
  138.        
  139.         return strResult;
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement