Sortierverfahren



  • @volkard

    Wäre dir sehr dankbar wenn du mir nochmals helfen könntest 😋

    //feld anlegen
    char** feld= new (char*)[anzahl];
    

    error C2143: Syntaxfehler : Fehlendes ';' vor '['
    error C2143: Syntaxfehler : Fehlendes ';' vor '['

    void insertionSort(int numbers[], int array_size)
    {
      int i, j, index;
    
      for (i=1; i < array_size; i++)
      {
        index = numbers[i];
        j = i;
        while ((j > 0) && (numbers[j-1] > index))
        {
          numbers[j] = numbers[j-1];
          j = j - 1;
        }
        numbers[j] = index;
      }
    }
    
    //blitzschnell sortieren
    sort(feld, feld+anzahl, StrLess);
    

    error C2275: "StrLess" : Ungültige Verwendung dieses Typs als Ausdruck

    Wie müsste ich nun die Sort Funktion umschreiben, damit es funktioniert?
    (meine Vorschläge kommen gleich)

    insertionSort(feld, feld+anzahl, StrLess);
    

    Warum wird hier feld + anzahl gerechnet? 😕

    Wäre dir sehr dankbar...irgendwie fehlt es mir an der Logik 🙄



  • Hab zwar nicht alles gelesen, aber du scheinst Probleme mit dem Quicksort zu haben, ich hätte dir ein kleines Template das ich momentan verwende.

    Und schau doch mal hier
    allerdings hat da das Quicksort bei mir nicht funktioniert, aber erklärt ist es nicht schlecht. 😉



  • Hallo,

    Danke - Quicksort funktioniert jedoch schon, aber mit InterationSort gibts probleme - siehe letzten Post oben von mir ...



  • Hallo
    ist es möclich eine einfach verkettete Liste mit einem Array(Mehrdimensional) zu vergleichen?

    //
    // EVL - String - Char
    //
    
    typedef struct LISTELEMENT_CHAR{
        char *data;
        struct LISTELEMENT_CHAR *next;
    }ListElement_char;
    
    void insertionSort(char **string, int array_size)
    {
      int i, j;
      char *index = NULL;
    
      for (i=1; i < array_size; i++)
      {
    	strcpy(index, string[i]);
        //index[0] = string[i];
        j = i;
        while ((j > 0) && (strcmp(string[j-1], index)))
        {
    	  strcpy(string[j], string[j-1]);
          //string[j] = string[j-1];
          j = j - 1;
        }
    	strcpy(string[j], index);
        //string[j] = index;
      }
    }
    

    Wie jedoch sollte der Aufruf lauten?

    insertionSort(temp_char->data, counter);
    

    Denke nicht das es möglich ist, oder?
    Wie sollte ich es sonst vergleichen?

    Danke


Anmelden zum Antworten