Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Поразрядная сортировка (через младший разряд)
- // Сперва определяем максимальное кол-во разрядов (max_r).
- // Затем max_r раз пытаемся сортировать массив по разрядам (с младшего до старшего(max_r))
- // В этих попытках по аналогии сортировки пузырьком в начало массива поразрядно всплывают числа (сперва числа, оканчивающиеся на 0, затем на 1, 2 и тд)
- void radix_sort(int *a, int n)
- {
- int max_r = 0;
- for (int i = 0; i < n; i++)
- {
- int p = a[i];
- int j = 0;
- while (p > 0)
- {
- p /= 10;
- j++;
- }
- if (j > max_r)
- max_r = j;
- }
- for (int i = 0; i < max_r; i++)
- {
- int flag_b = 0;
- for (int j = 0; j <= 9; j++)
- {
- for (int k = 0; k < n; k++)
- {
- int c = a[k];
- for (int u = 0; u < i; u++)
- c /= 10;
- c %= 10;
- if (c == j)
- {
- swap(&a[flag_b], &a[k]);
- flag_b++;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement