Skip to content
Snippets Groups Projects
Select Git revision
  • f72af5e996cc0351e964f7fdcca2f7ec577636a4
  • master default protected
  • v3-modify-mail
  • snyk-fix-207483a1e839c807f95a55077e86527d
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_ru
  • translations_6e4a5e377a3e50f17e6402264fdbfcc6_ru
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_fa_IR
  • translations_en-yml--master_fa_IR
  • snyk-fix-7d634f2eb65555f41bf06d6af930e812
  • translations_en-yml--master_ar
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_el
  • jfederico-patch-1
  • v2
  • v3
  • v1
  • release-3.1.0.2
  • release-3.1.0.1
  • release-3.1.0
  • release-2.14.8.4
  • release-3.0.9.1
  • release-3.0.9
  • release-3.0.8.1
  • release-2.14.8.3
  • release-3.0.8
  • release-3.0.7.1
  • release-2.14.8.2
  • release-3.0.7
  • release-3.0.6.1
  • release-3.0.6
  • release-3.0.5.4
  • release-3.0.5.3
  • release-2.14.8.1
  • release-3.0.5.2
  • release-3.0.5.1
  • release-3.0.5
35 results

babel.config.js

Blame
  • sort-6.c 1.08 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 (200);
      return result;
    }
    
    int find_first (char **name, int i0)
    {
      int first = i0;
      for (int i = i0 + 1; name[i]; i++)
        if (compare (name, i, first) < 0)
          first = i;
      return first;
    }
    
    void sort (char **name)
    {
      int sorted = 0;
      while (name[sorted])
        {
          int first = find_first (name, sorted);
          char *temp = name[sorted];
          name[sorted] = name[first];
          name[first] = temp;
          sorted++;
        }
    }
    
    int main (void)
    {
      char *name[] = {
                       #include "names.h"
                       NULL
                     };
      sort (name);
      display (name, -1, -1);
      return 0;
    }