Skip to content
Snippets Groups Projects
Select Git revision
  • 8b47188adb90c6bc8d6454ccdfda930376e89adc
  • master default protected
  • 7-funktion-um-zuruck-zum-menu-zu-kommen-fehlt
  • V1.0
4 results

main.py

Blame
  • bsort-3b.c 1.19 KiB
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    
    int comparisons = 0;
    
    void display (char **name, int left, int right)
    {
      printf ("\e[H\e[J");
      for (int i = 0; name[i]; i++)
        {
          printf ("%s", name[i]);
          if (i == left || i == right)
            printf (" <--");
          printf ("\n");
        }
      printf ("%d\n", comparisons);
    }
    
    int compare (char **name, int left, int right)
    {
      int result = strcmp (name[left], name[right]);
      comparisons++;
      display (name, left, right);
      usleep (200000);
      return result;
    }
    
    void sort (char **name)
    {
      int done = 0;
      int sorted = 0;
      while (name[sorted])
        sorted++;
      while (sorted > 0 && !done)
        {
          done = 1;
          for (int i = 1; i < sorted; i++)
            if (compare (name, i - 1, i) > 0)
              {
                done = 0;
                char *temp = name[i - 1];
                name[i - 1] = name[i];
                name[i] = temp;
              }
          sorted--;
        }
    }
    
    int main (void)
    {
      char *name[] = { "Zacharias", "Ulrich", "Thomas", "Siegfried", "Peter", "Otto", "Maria",
                       "Lisa", "Hugo", "Heinrich", "Hans", "Fritz", "Dieter", "Box", "Berta",
                       "Anna", NULL };
      sort (name);
      display (name, -1, -1);
      return 0;
    }