Форум программистов, компьютерный форум CyberForum.ru

Как правильно запустить поразрядную сортировку? - C++

Восстановить пароль Регистрация
 
sigma7i
 Аватар для sigma7i
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 17
17.10.2013, 12:45     Как правильно запустить поразрядную сортировку? #1
Добрый день!
есть такая замечательная ветка Алгоритмы сортировок

есть там поразрядная сортировка:
Кликните здесь для просмотра всего текста
чтобы не прыгать по ссылкам:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
typedef struct slist_ { 
  long val;
  struct slist_ *next; 
} slist;
 
// функция сортировки возвращает указатель на начало отсортированного списка 
slist *radix_list(slist *l, int t) {
  //  t - разрядность (максимальная длина числа) 
  int i, j, d, m=1;
  slist *temp, *out, *head[10], *tail[10];
  out=l;
 
  for (j=1; j<=t; j++) { 
    for (i=0; i<=9; i++)
      head[i] = (tail[i]=NULL);
 
    while ( l != NULL ) {
      d = ((int)(l->val/m))%(int)10;
      temp = tail[d];
      if ( head[d]==NULL ) head[d] = l;
      else temp->next = l;
      temp = tail[d] = l;
      l = l->next;
      temp->next = NULL;
    }
    for (i=0; i<=9; i++)
      if ( head[i] != NULL ) break;
    l = head[i];
    temp = tail[i];
    for (d=i+1; d<=9; d++) {
      if ( head[d] != NULL) { 
        temp->next = head[d];
        temp = tail[d];
      }
    }
    m*=10;
  }
  return (out);
}


пытаюсь ее запустить:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    slist ls[19];
    int integer[19] = {5,7,1,33,66,44,15,9,0,96,100,88,33,21,12,11};
 
    for(int ix=0; ix<19; ix++){
        ls[ix].val = integer[ix];
    }
 
    radix_list(ls,3);
 
    for(int i = 0; i<19;i++)
    std::cout << integer[i] << " ";
 
 
    std::cout << std::endl;
}


вопрос: как запустить?
и аргумент t в функции radix_list, имеется ввиду максимальная длина числа в десятичной системе или двоичной?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 12:45     Как правильно запустить поразрядную сортировку?
Посмотрите здесь:

C++ Как реализовать такую сортировку??
Как вывести пошагово сортировку? C++
C++ Задача на сортировку массива по возрастанию методом выбора минимального элемента. Не правильно работает код
Сортировку вставками меняем на сортировку слиянием C++
Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом C++
C++ Как ускорить пирамидальную сортировку?
Исправить ошибки в коде или пояснить как правильно запустить C++
C++ Как правильно вписать функцию в h-файл и правильно её отразить в основной функции?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FiLF
52 / 52 / 15
Регистрация: 05.09.2013
Сообщений: 1,088
17.10.2013, 13:32     Как правильно запустить поразрядную сортировку? #2
t -- максимальная длина числа в 10-ой системе счисления.
Почитайте про линейные списки.
И я бы посоветовал взять другую реализацию. Похоже, что функция работает некорректно.
sigma7i
 Аватар для sigma7i
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 17
17.10.2013, 21:53  [ТС]     Как правильно запустить поразрядную сортировку? #3
Мне больше кажется что это у меня реализация неправильная
или я пытаюсь не те данные вставить.

Эта функция достаточно распространена, может она тогда на всех сайтах некорректна.
Yandex
Объявления
17.10.2013, 21:53     Как правильно запустить поразрядную сортировку?
Ответ Создать тему
Опции темы

Текущее время: 04:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru