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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sigma7i
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 17
#1

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

17.10.2013, 12:45. Просмотров 287. Ответов 2
Метки нет (Все метки)

Добрый день!
есть такая замечательная ветка Алгоритмы сортировок

есть там поразрядная сортировка:
Кликните здесь для просмотра всего текста
чтобы не прыгать по ссылкам:
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++
как правильно запустить рекурсию? const reversion reversion::operator %(const reversion &amp;right) { ...... ...

Исправить ошибки в коде или пояснить как правильно запустить - C++
Добрый вечер,нужна помощь есть текст программы написанный в 2010 с++ ,немогу запустить в 2013,выдает ошибку что неправильная...

Задача на сортировку массива по возрастанию методом выбора минимального элемента. Не правильно работает код - C++
Моя задача отсортировать массив методом выбора минимального элемента. Он заключается в следующем. Ищем в массиве минимальный элемент и...

Как правильно унаследовать TPoint2D от TPoint3D/ Правильно ли наследовать? ООП - C++
Два пользовательских класса: Точка в 2D пространстве и точка в 3D пространстве. class TPoint3D{ int X,Y,Z; public: ...

сортировку по Tag и сортировку по Eng - C++
Есть структура: struct _1C { string Tag; string Rus; string Eng; _1C(const string &amp;Tag, const string &amp;Rus, const string...

Как реализовать сортировку вставками? - C++
Дорогие форумчане. на учебе дали задание по сортировки вставками. Берется очередной элемент и извлекается из массива. Затем от начала...

Как оптимизировать быструю сортировку? - C++
Помогите пожалуйста оптимизировать быструю сортировку. Какой лучше выбрать опорный элемент? #include &lt;iostream&gt; #include &quot;fstream&quot;...

Как вывести пошагово сортировку? - C++
Есть программа сортировки. сортировка пирамидальная. Всё работает, плюс есть счётчик на сравнения и перестановки как сделать так, что бы...

Как реализовать такую сортировку?? - C++
У меня имеется структура данных, я хочу ввести месяц, а мне чтобы вывелись люди, у которых в этом месяце день рождения, как это сделать? ...


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

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

Эта функция достаточно распространена, может она тогда на всех сайтах некорректна.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru