Felder sortieren

Tutorials.at
Verfügbare Informationen zu "Felder sortieren"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: dani93 - wirthi - Xin
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 6
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Felder sortieren
  • Letzte Antwort: vor 15 Jahren, 8 Tagen, 18 Stunden, 57 Minuten
  • Alle Beiträge und Antworten zu "Felder sortieren"

    Re: Felder sortieren

    dani93 - 15.03.2008, 00:31

    Felder sortieren
    Hallo
    Kann mir jemand sagen wie man die Feldinhalte mit Schleife und if sortiert?
    Bisher hab ichs nur so wiet gebracht, funzt aber nicht ganz.

    Code:  
    #include <stdio.h>
    #include <conio.h>
    #include <time.h>
    #include <stdlib.h>

    int main ()
    {

     int i, c, x, help, zufall[10];

     for (i=0; i<10; i++)
     {

      zufall[i]=random (44)+1;  //Zufallszahlen werden
                                            //abgespeichert
      x=zufall[i];

      for (c=0; c<i; c++)     //damit keine Zahl doppelt vorkommt
      {

       if (x==zufall[c])
       {
        i--;
       }

      }

     }


     for (i=0; i<10; i++)       //und das ist der Teil, bei dem
     {                              //ich mir nicht sicher bin...

      if (zufall[i]>zufall[i+1])
      {

       help=zufall[i];
       zufall[i]=zufall[i+1];
       zufall[i+1]=help;

      }

     }
     
     for (i=0; i<10; i++)        //und noch die Ausgabe
     {
      printf ("%d  ", zufall[i]);
     }

     getch();
     return 0;

    }


    Sind wenigstens die Ansätze schon richtig?
    lg dani93



    Re: Felder sortieren

    wirthi - 15.03.2008, 02:29


    Naja, die Grundidee ist richtig. Was du versucht zu machen, scheint ein "Selectionsort"-Algorithmus zu sein. Schau dir einfach den betreffenden Wikipedia-Artikel an, dort gibt es Erklärungen und Codebeispiele.

    http://de.wikipedia.org/wiki/Selectionsort



    Re: Felder sortieren

    Xin - 16.03.2008, 23:11


    wirthi hat folgendes geschrieben: Naja, die Grundidee ist richtig. Was du versucht zu machen, scheint ein "Selectionsort"-Algorithmus zu sein. Schau dir einfach den betreffenden Wikipedia-Artikel an, dort gibt es Erklärungen und Codebeispiele.

    http://de.wikipedia.org/wiki/Selectionsort
    Sieht mehr eher nach 'nem halben Bubblesort aus. Da hat Wikipedia sicher auch eine Seite zu.
    Ansonsten setz eine Schleife drumrum und höre auf zu sortieren, wenn es sortiert ist. ^^



    Re: Felder sortieren

    dani93 - 17.03.2008, 16:15


    Ja genau Bubblesort soll das heißen.
    Also das ist meine neue Version (die sogar funktioniert):


    Code:
    int BubbleSort (int a[], int anz)
    {

     int c, i;

     for (c=0; c<anz; c++)
     {

      for (i=0; i<anz; i++)
      {

       if (a[i]>a[c])
       {
        vertauscheZahlen (a, c, i);
       }

      }

     }

     return 0;

    }


    int vertauscheZahlen (int a[], int c, int i)
    {

     int help;

     help=a[c];
     a[c]=a[i];
     a[i]=help;

     return 0;

    }

    Hinweis: Das sind beides Unterprogramme, das ist aber für die Funktionsweise doch nicht relevant.



    Re: Felder sortieren

    wirthi - 17.03.2008, 16:19


    Ok, stimmt, du vertauscht immer nur benachbarte: BubbleSort

    Die äußere der beiden Schleifen kannst du noch optimieren, wie dir xin schon empfohlen hat: wenn sich bei einem der Durchläufe in der inneren Schleife nichts mehr tut (d.h. keine Umsortierungen notwendig sind), dann ist das Feld bereits sortiert. Dann kannst die äußere Schleife ebenfalls abbrechen.



    Re: Felder sortieren

    dani93 - 17.03.2008, 17:04


    Also ich glaub jetzt ist es mehr Bubblesort und das mit der Schleife hab ich auch gemacht:

    Code:
    int BubbleSort (int a[], int anz)
    {

     int c, i, t=1;

     for (c=0; c<anz&&t==1; c++)
     {

      t=0;

      for (i=0; i<anz; i++)
      {

       if (a[i]>a[i+1])
       {
        vertauscheZahlen (a, i);
        t=1;
       }

      }

     }

     return 0;
     
    }


    int vertauscheZahlen (int a[], int y)
    {

     int help;

     help=a[y];
     a[y]=a[y+1];
     a[y+1]=help;

     return 0;

    }



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Englischvokabelverwalter - gepostet von Dragorad am Montag 23.10.2006
    @Walgo - gepostet von Xin am Samstag 21.07.2007
    Client/Server - gepostet von d.d.d. am Sonntag 11.03.2007
    Turbo C - gepostet von Mei$ter A^ am Montag 24.04.2006
    Eigene Programme - gepostet von vpascal am Mittwoch 04.04.2007
    Wichtige Frage zu Pascal - gepostet von Akira am Montag 25.06.2007



    Ähnliche Beiträge wie "Felder sortieren"

    Hell Blauer Name!!! - Jin (Sonntag 01.04.2007)
    bald neuer name ^^ - anna (Donnerstag 07.07.2005)
    name? - Samok (Samstag 12.08.2006)
    Euer Name.... - Angel (Montag 08.01.2007)
    Name.. - McCase (Donnerstag 03.05.2007)
    What's Behind Your User Name? - Arrival57 (Mittwoch 31.10.2007)
    Wie sexy ist euer Name? - Compuexe (Montag 05.03.2007)
    Schei Name - Gum (Dienstag 20.06.2006)
    Neuer Gilden Name - Anaso (Samstag 30.10.2004)
    Name für das Forum gesucht - Trailcrusher (Sonntag 21.01.2007)