Das einzigartige Forum
allrounder
- Informatik

Informatik Nachhilfe

Informatik Nachhilfe

    Gebe hiermit bekannt, dass
Ich in Fach Informatik bereit bin ,falls ich kann ,
ein paar Tips zu geben wie man auf Durschnitt 1.0 heransteigt.

kann bei Sortierverfahren noch heute eine HILFE GEBEN.


Was dich nicht umbringt,
Macht dich nur noch Stärker.

Proffessor.Dr.Drewer

Re: Informatik Nachhilfe

wenn ich Zeit haben werde, werde ich den bubblesort hier reinstellen



Re: Informatik Nachhilfe

habs gemacht



Re: Informatik Nachhilfe

/**
* This Class has an Enummeration of Sort Methodes to further Use
*
* @author Vladimir Parashin
* @version (beta)
*/
public class NewStdClass {
// instance variables - replace the example below with your own

/**
* An example of a method - replace this comment with your own
*
* @param y a sample parameter for a method
* @return the sum of x and y
*/
public static int [] bubbleSort(int[] toSort) { // das Methode zu Sortieren
boolean stop = false;
int counter = 0;
while(stop == false){ // Warte bis Stop Schleife
counter++;
stop = true;
counter++;
for(int i = 0;i<toSort.length-1;i++;){
counter++;
if(toSort[i] >toSort[i+1]){
counter++;
int temp = toSort[i]; // Tauschen
counter++;
toSort[i] = toSort[i+1];
counter++;
toSort[i+1]= temp;
counter++;
stop = false;
counter++;
}
}
}
return toSort;
}
public static void main(String args[]){ // Test
int [] a = new int [8];
a[0]= 452;
a[1]= -34;
a[2]= 131;
a[3]= 23;
a[4]= -452;
a[5]= -34;
a[6]= 121;
a[7]= -23;


a = bubbleSort(a);
for(int x = 0;x
System.out.println(a[x]);
}
}
}

Sorry Andrej but thats how u do it






Was dich nicht umbringt,
Macht dich nur noch Stärker.

Proffessor.Dr.Drewer

Re: Informatik Nachhilfe

MERGARDS VERGLEICH DER SORTIERVERFAHREN

/** Sortierverfahren
  * @author Mergard & If 11 2007/2008 (Me)
  * @version 20.4.2008 */
public class Sortiervergleich {
 
   /** Wandelt einen Array in einen String um
    * @param derArray ein beliebiger Array aus Integern
    * @return den Inhalt des Arrays als String */
   public static String ArrayAusgabe(int[] derArray)
   {
     String S = "";
     for(int x = 0; x < derArray.length; x++){S += " "+derArray[x];}
     if (S.equals("")) return " (leerer Array)";
     return S;
   }
 
   /** Gibt eine Zusammenfassung zu einem Sortierverfahren aus
    * @param Verfahren ist der Name der Sortiermethode
    * @param sortiert ein sortierter Array aus Integern
    * @param wieviel ist die Anzahl der benötigten Schritte
    * @throws RuntimeException wenn der Array nicht korrekt sortiert ist*/
   public static void Ausgabe(String Verfahren, int[] sortiert, int wieviel)
   {
     System.out.print(Verfahren+" liefert: in "+wieviel+" Schritten");
     boolean ok = true;
     for (int i = 1; i < sortiert.length; i++)
     { //Prüfe, ob die Reihenfolge korrekt ist
         if (sortiert[i] < sortiert[i-i])
         throw new RuntimeException("Falsches Ergebnis:"+ArrayAusgabe(sortiert));
     }
     System.out.println(" das richtige Ergebnis.");
   }
 
   /** Sortiert den Array durch "hochschieben" von Zahlen im Array
    * @param  toSort der noch nicht sortierte Array aus Integern
    * @return der sortierte Array */
   public static int[] bubbleSortStandard(int[] toSort)
   { //Sortiermethode
     int anz = 0; //Anzahl der ausgeführten Befehle
     anz ++; //für die Initialisierung der Schleifenvariablen "Obergrenze"
     for (int Obergrenze=toSort.length-1; Obergrenze > 0; Obergrenze --)
     // Warte bis Obegrenze klein genug wird
     { anz ++;  //Schleifenabfrage
       anz ++; //für die Initialisierung der Schleifenvariablen "i"
       for(int i = 0; i < Obergrenze; i++) //für alle Array-Objekte
       { anz ++; //Schleifenabfrage
         if(toSort[i] > toSort[i+1])
         {
           int temp =  toSort[i];                // Tauschen
           toSort[i] = toSort[i+1];
           toSort[i+1]= temp;
           anz += 3; //Vertauschen
         }// Ende des if-Befehls
         anz ++; //der Vergleich des if-Befehls
         anz ++; //Erhöhen der Schleifenvariablen "i"
       }
       anz ++;  //letzte for-Schleifenabfrage die zum Abbruch führt
     }
     anz ++;  //letzte for-Schleifenabfrage die zum Abbruch führt
     Ausgabe("Standard-BubbleSort",toSort,anz);
     return toSort;
   } //Ende der Sortiermethode
 
   /** BubbleSort-Variante, die abbricht, wenn nichts mehr zu tun war
    * @param  toSort der noch nicht sortierte Array aus Integern
    * @return der sortierte Array */
   public static int[] bubbleSortMitBremse(int[] toSort)
   { //Sortiermethode
     boolean stop = false; int anz = 1; //Anzahl der ausgeführten Befehle
     anz ++; //für die Initialisierung der Schleifenvariablen "Obergrenze"
     for (int Obergrenze=toSort.length-1; stop == false; Obergrenze --)
     // Warte bis stop==true die Schleife beendet
     { anz ++;  //Schleifenabfrage
       stop = true; anz++;
       anz ++; //für die Initialisierung der Schleifenvariablen "i"
       for(int i = 0; i < Obergrenze; i++) //für alle Array-Objekte
       { anz ++; //Schleifenabfrage
         if(toSort[i] > toSort[i+1])
         {
           int temp =  toSort[i];                // Tauschen
           toSort[i] = toSort[i+1];
           toSort[i+1]= temp;
           stop = false;
           anz += 4; //Vertauschen und "stop" verändern
         }// Ende des if-Befehls
         anz ++; //der Vergleich des if-Befehls
         anz ++; //Erhöhen der Schleifenvariablen "i"
       }
       anz ++;  //letzte for-Schleifenabfrage die zum Abbruch führt
     }
     anz ++;  //letzte for-Schleifenabfrage die zum Abbruch führt
     Ausgabe("BubbleSort mit Bremse",toSort,anz);
     return toSort;
   } //Ende der Sortiermethode
 
   /** BubbleSort-Variante ohne Obergrenze
    * @param  toSort der noch nicht sortierte Array aus Integern
    * @return der sortierte Array */
   public static int[] bubbleSortVladimirParashin(int[] toSort)
   { //Sortiermethode
     boolean stop = false; int anz = 1; //Anzahl der ausgeführten Befehle
     while(stop == false) // Warte bis stop==true die Schleife beendet
     { anz ++;  //Schleifenabfrage
       stop = true; anz++;
       anz ++; //für die Initialisierung der Schleifenvariablen "i"
       for(int i = 0; i < toSort.length-1; i++) //für alle Array-Objekte
       { anz ++; //Schleifenabfrage
         if(toSort[i] > toSort[i+1])
         {
           int temp =  toSort[i];                // Tauschen
           toSort[i] = toSort[i+1];
           toSort[i+1]= temp;
           stop = false;
           anz += 4; //Vertauschen und "stop" verändern
         }// Ende des if-Befehls
         anz ++; //der Vergleich des if-Befehls
         anz ++; //Erhöhen der Schleifenvariablen "i"
       }
       anz ++;  //letzte for-Schleifenabfrage die zum Abbruch führt
     }
     anz ++;  //letzte while-Schleifenabfrage die zum Abbruch führt
     Ausgabe("Vladimirs Methode",toSort,anz);
     return toSort;
   } //Ende der Sortiermethode
 
   /** Bergleicht die Sortierverfahren anhand eines Beispiels
    * @param  toSort der noch nicht sortierte Array aus Integern */
   public static void Beispiel(int[] toSort)
   {
     System.out.println("Sortiere"+ArrayAusgabe(toSort));
     int[] dummy = new int[toSort.length];
     System.arraycopy(toSort,0,dummy,0,toSort.length);
     dummy = bubbleSortStandard(dummy);
     System.arraycopy(toSort,0,dummy,0,toSort.length);
     dummy = bubbleSortMitBremse(dummy);
     System.arraycopy(toSort,0,dummy,0,toSort.length);
     dummy = bubbleSortVladimirParashin(dummy);
   }
 
   /** Hauptprogramm */
   public static void main()
   { //Vergleiche die Verfahren an verschiedenen Beispielen
     int[] a0 = {};                                       Beispiel(a0);
     int[] a1 = {452, -34, 131, 23, -452, -34, 121, -23}; Beispiel(a1);
     int[] a2 = {0,1,2,3,4,5,6,7,8,9,10};                 Beispiel(a2);
     int[] a3 = {10,9,8,7,6,5,4,3,2,1,0};                 Beispiel(a3);
   } //Ende des Hauptprogramms
}
 
//Ausgabezahlen:
//  2    7    6
//158  166  195
//197   37   36
//362  432  596





Re: Informatik Nachhilfe

Felern die ich bisher gefunden habe :
>
25> boolean ok = true; braucht man nicht
141> public static void main(String args [])
officielle screibweisse(sonst ist es nur eine
ganz normalle statische Methode.)
28> if (sortiert[i] < sortiert[i-i]) muste i-1 sein;
52-53,83-84 da sollte jeweils anz ++; Stehen die für das obergrenzenänderung da
ist.
66> war in der original Abfrage eine doppel check,
nicht : for (int Obergrenze=toSort.length-1; stop == false; Obergrenze --)
sondern:for (int Obergrenze=toSort.length-1; stop == false && Obergrenze >0; Obergrenze --) und danach natürlich anz++;

die Ergebnisse dafür wurden sich auch ändern bei 2-te Methode Schleife:3 176 39 448
(s....t, auf dieser Weisse ist es Sogar besser als meine bei der 1-tem Vergleich.Tja aber gerechtigkeit muss sein;)



Was dich nicht umbringt,
Macht dich nur noch Stärker.

Proffessor.Dr.Drewer

Re: Informatik Nachhilfe

Hier HA:
Standard-BubbleSort liefert: in 41 Schritten das richtige Ergebnis.
BubbleSort mit Bremse liefert: in 53 Schritten das richtige Ergebnis.
Vladimirs Methode liefert: in 66 Schritten das richtige Ergebnis.
1230-,ich bin ein Programmist, rechnen war gestern.


Was dich nicht umbringt,
Macht dich nur noch Stärker.

Proffessor.Dr.Drewer

Re: Informatik Nachhilfe

der mergard aber sagte , dass es nur eine zeile falsch bzw. zugefügt werden sollte bei jeweils seiner methode d.h insgesammt nur zwei änderungen





Re: Informatik Nachhilfe

die Fehler habe ich leider nicht entdeckt

bei mir kommt heraus:

1. 38

2. 49

3. 66





Re: Informatik Nachhilfe

OK hab die HA fertig,aber das Erg. werde ich nur Morgen Nachmittag Veröffentlichen.   Ihr könnt mich aber Ruhig Fragen falls ihr selbst nicht zurecht kommt .

ps. Andrej ich erwarte heute das du es fast fertig hinkriegst.


Was dich nicht umbringt,
Macht dich nur noch Stärker.

Proffessor.Dr.Drewer