homeSoftwaredesign Softwaredesign: Beispiel: Parametrisierbares Sortieren eines Feldes Prof. Dr. Uwe Schmidt FH Wedel

Beispiel: Parametrisierbares Sortieren eines Feldes

weiter

weiter

eine Klasse für Sortieralgorithmen: SortAlgorithm

abstract
public
class SortAlgorithm {
  
  protected
  CompareFunction c;
 
  protected
  SortAlgorithm(CompareFunction c) {
    this.c = c;
  }
 
  abstract
  void sort(int [] a);
}
 
 
    
weiter

weiter

eine konkrete Implementierung: BubbleSort

public
class BubbleSort extends SortAlgorithm {
 
 
  //--------------------
 
  // the constructor
  // defines the compare function
 
  public
  BubbleSort(CompareFunction c) {
    super(c);
  }
 
  //--------------------
 
  public
  void sort(int [] a) {
    // simple bubble sort
    // --> 2 nested loops
    for (int i = a.length -1;
         i >= 0;
         --i ) {
      for (int j = 0;
           j < i;
           ++j ) {
        if ( c.compare(a[j]a[j+1]) > 0 ) {
          int tmp = a[j];
          a[j]    = a[j+1];
          a[j+1]  = tmp;
        }
      }
    }
  }
}
weiter

weiter

eine weiter konkrete Implementierung: QuickSort

public
class QuickSort extends SortAlgorithm {
 
 
  //--------------------
 
  // the constructor
  // defines the compare function
 
  public
  QuickSort(CompareFunction c) {
    super(c);
  }
 
  //--------------------
 
  public
  void sort(int [] a) {
    // some more complicated code
    // ...
    // if ( c.compare(..., ...) ) ...
  }
}
weiter

weiter

die Schnittstelle für die Vergleichsfunktion

public
interface CompareFunction {
  abstract
  public
  int compare(int iint j);
}

Letzte Änderung: 13.04.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel