1. Си / Говнокод #25130

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    #include <stdio.h>
    #include <inttypes.h>
    #include <string.h>
    
    typedef struct
    {
      uint8_t arr[10];
      uint8_t pos;
      uint8_t is_swap;
    } arr10;
    
    arr10 bubble_sort_recursion(arr10 a);
    void bubble_sort (uint8_t arr[static 10]);
    
    
    void bubble_sort (uint8_t arr[static 10])
    {
      arr10 a;
      memcpy(a.arr, arr, sizeof(a.arr));
      a.pos = 0;
      a.is_swap = 0;
      a = bubble_sort_recursion(a);
      memcpy(arr, a.arr, sizeof(a.arr));
    }
    
    arr10 bubble_sort_recursion(arr10 a)
    {
      if (a.pos != 9)
      {
        if (a.arr[a.pos] > a.arr[a.pos + 1])
        {
          uint8_t tmp = a.arr[a.pos + 1];
          a.arr[a.pos + 1] = a.arr[a.pos];
          a.arr[a.pos] = tmp;
          a.is_swap = 1;
        }
        a.pos++;
        return bubble_sort_recursion(a);
      }
      else
      {
       if (a.is_swap == 0)
       {
         return a;
       }
       else
       {
         a.pos = 0;
         a.is_swap = 0;
         return bubble_sort_recursion(a);
       }
      }
    }
    
    int main(void)
    {
      uint8_t arr[10] = {244, 90, 254, 109, 33, 85, 69, 81, 126, 71};
      bubble_sort(arr);
      printf("%" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8,
             arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9]);
      return 0;
    }

    Рекурсивная сортировка пузырьком

    Запостил: j123123, 29 Ноября 2018

    Комментарии (7) RSS

    • Задание для roman-kashitsyn: переписать на Idris и доказать корректность через гомоиконы зависимые типы
      Ответить
    • Компилтайм-крестопарашная версия
      #include <cinttypes>
      
      typedef struct
      {
        uint8_t arr[10];
      } arr10;
      
      typedef struct
      {
        arr10 arr;
        uint8_t pos;
        uint8_t is_swap;
      } arr10_sort;
      
      constexpr arr10_sort bubble_sort_recursion(arr10_sort a)
      {
        if (a.pos != 9)
        {
          if (a.arr.arr[a.pos] > a.arr.arr[a.pos + 1])
          {
            uint8_t tmp = a.arr.arr[a.pos + 1];
            a.arr.arr[a.pos + 1] = a.arr.arr[a.pos];
            a.arr.arr[a.pos] = tmp;
            a.is_swap = 1;
          }
          a.pos++;
          return bubble_sort_recursion(a);
        }
        else
        {
         if (a.is_swap == 0)
         {
           return a;
         }
         else
         {
           a.pos = 0;
           a.is_swap = 0;
           return bubble_sort_recursion(a);
         }
        }
      }
      
      constexpr arr10 bubble_sort_do(arr10 a)
      {
          const arr10_sort b = {a, 0, 0};
          arr10_sort b2 = bubble_sort_recursion(b);
          return b2.arr;
      }
      
      
      arr10 arr_sorted = bubble_sort_do({244, 90, 254, 109, 33, 85, 69, 81, 126, 71});
      Ответить
      • Ты перешёл на тёмную сторону?
        Ответить
        • Нет конечно. На крестоговне я пишу обычно чисто по приколу, чтоб поржать над убогостью этого тупого дерьмиша. Вы представляете, в крестоговняных констэкспрах memcpy и memcmp запрещен!
          Ответить
          • Какой кошмар )))
            Ответить
            • После того, как это секс-меньшинство потёрло моих бойцов, я не могу даже минусовать тебя, а ведь злость надо куда-то девать. Сделай так, чтобы тебе на горло упал топор. Или прыгни под машину. Или заклюйся.
              Ответить
      • А теперь переведи на "препроцессор".
        Ответить

    Добавить комментарий