Advertisement
epidzhx

radix_sort

May 22nd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.38 KB | None | 0 0
  1. // Поразрядная сортировка (через младший разряд)
  2. // Сперва определяем максимальное кол-во разрядов (max_r).
  3. // Затем max_r раз пытаемся сортировать массив по разрядам (с младшего до старшего(max_r))
  4. // В этих попытках по аналогии сортировки пузырьком в начало массива поразрядно всплывают числа (сперва числа, оканчивающиеся на 0, затем на 1, 2 и тд)
  5.  
  6. void radix_sort(int *a, int n)
  7. {
  8.    
  9.     int max_r = 0;
  10.     for (int i = 0; i < n; i++)
  11.     {
  12.         int p = a[i];
  13.         int j = 0;
  14.         while (p > 0)
  15.         {
  16.             p /= 10;
  17.             j++;
  18.         }
  19.         if (j > max_r)
  20.             max_r = j;
  21.     }
  22.    
  23.     for (int i = 0; i < max_r; i++)
  24.     {
  25.         int flag_b = 0;
  26.         for (int j = 0; j <= 9; j++)
  27.         {
  28.             for (int k = 0; k < n; k++)
  29.             {
  30.                 int c = a[k];
  31.                 for (int u = 0; u < i; u++)
  32.                     c /= 10;
  33.                 c %= 10;
  34.                
  35.                 if (c == j)
  36.                 {
  37.                     swap(&a[flag_b], &a[k]);
  38.                     flag_b++;
  39.                 }
  40.             }
  41.         }
  42.     }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement