Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.FileInputStream;
- import java.io.ObjectInputStream;
- import java.util.Vector;
- public class classExchangesort {
- private Object[] arrElements = null;
- public void read(String strPath) {
- ObjectInputStream oisElements = null;
- Vector<Object> vecElements = new Vector<Object>();
- try {
- oisElements = new ObjectInputStream(new FileInputStream(strPath));
- do {
- Object objectElement = oisElements.readObject();
- if (objectElement == null) {
- continue;
- }
- vecElements.add(objectElement);
- } while (true);
- } catch (Exception e) {
- }
- this.arrElements = vecElements.toArray(new Object[0]);
- try {
- oisElements.close();
- } catch (Exception e) {
- }
- }
- public int readMatNr(Object objGetter) {
- if (objGetter instanceof Student_MatNr) {
- return ((Student_MatNr) objGetter).getMatNr();
- }
- if (objGetter instanceof Student_Voll) {
- return ((Student_Voll) objGetter).getMatNr();
- }
- return 0;
- }
- public void sort() {
- long longTimestamp = System.nanoTime();
- for (int intForLeft = 1; intForLeft < this.arrElements.length; intForLeft += 1) {
- for (int intForRight = this.arrElements.length - 1; intForRight > intForLeft - 1; intForRight -= 1) {
- if (this.sortCompare(this.arrElements[intForRight - 1], this.arrElements[intForRight]) > 0) {
- this.sortExchange(intForRight - 1, intForRight);
- }
- }
- }
- longTimestamp = System.nanoTime() - longTimestamp;
- System.out.println("Took " + longTimestamp + " ns.");
- }
- public int sortCompare(Object objLeft, Object objRight) {
- int intMatNrLeft = this.readMatNr(objLeft);
- int intMatNrRight = this.readMatNr(objRight);
- return intMatNrLeft - intMatNrRight;
- }
- public void sortExchange(int intLeft, int intRight) {
- Object objectTemp = null;
- objectTemp = this.arrElements[intLeft];
- this.arrElements[intLeft] = this.arrElements[intRight];
- this.arrElements[intRight] = objectTemp;
- }
- public void print() {
- for (int intForCurrent = 0; intForCurrent < this.arrElements.length; intForCurrent += 1) {
- System.out.println(this.readMatNr(this.arrElements[intForCurrent]));
- }
- }
- public void debug() {
- System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- System.out.println("+ \t\t\t\t\t\t + \tM\tC\t +");
- System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- System.out.println("+ \t" + this.debugPrint("\t", -1, -1) + " + \t0\t0\t +");
- System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- System.out.println();
- System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- int intMoves = 0;
- int intComparisons = 0;
- for (int intForLeft = 1; intForLeft < this.arrElements.length; intForLeft += 1) {
- for (int intForRight = this.arrElements.length - 1; intForRight > intForLeft - 1; intForRight -= 1) {
- intComparisons += 1;
- System.out.println("+ \t" + this.debugPrint("\t", intForRight - 1, intForRight) + " + \t0\t1\t +");
- if (this.sortCompare(this.arrElements[intForRight - 1], this.arrElements[intForRight]) > 0) {
- this.sortExchange(intForRight - 1, intForRight);
- intMoves += 3;
- System.out.println("+ \t" + this.debugPrint("\t", -1, -1) + " + \t3\t0\t +");
- }
- }
- System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- }
- System.out.println();
- System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- System.out.println("+ \t" + this.debugPrint("\t", -1, -1) + " + \t" + intMoves + "\t" + intComparisons + "\t +");
- System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- }
- public String debugPrint(String strDelimiter, int intHighlightLeft, int intHighlightRight) {
- String strResult = new String();
- for (int intForCurrent = 0; intForCurrent < this.arrElements.length; intForCurrent += 1) {
- if (intForCurrent == intHighlightLeft) {
- strResult += this.readMatNr(this.arrElements[intForCurrent]) + "<-" + strDelimiter;
- continue;
- }
- if (intForCurrent == intHighlightRight) {
- strResult += this.readMatNr(this.arrElements[intForCurrent]) + "<-" + strDelimiter;
- continue;
- }
- strResult += this.readMatNr(this.arrElements[intForCurrent]) + strDelimiter;
- }
- return strResult;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement