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

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

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

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

17.10.2013, 12:45. Просмотров 300. Ответов 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, имеется ввиду максимальная длина числа в десятичной системе или двоичной?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 12:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно запустить поразрядную сортировку? (C++):

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

Как правильно запустить рекурсию? - C++
как правильно запустить рекурсию? const reversion reversion::operator %(const reversion &amp;right) { ...... ...

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

Подскажите как эту сортировку переделать в сортировку по алфавиту? - C++
Подскажите как эту сортировку переделать в сортировку по алфавиту?? vector&lt;std::pair&lt;string, int&gt;&gt; popularAuthor; ...

Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом - C++
Здравствуйте. Я не как не могу разобраться.Помогите. У меня есть листинг сортировки вставками: #include &quot;stdafx.h&quot; #include...

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

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

Эта функция достаточно распространена, может она тогда на всех сайтах некорректна.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 21:53
Привет! Вот еще темы с ответами:

Сортировку вставками меняем на сортировку слиянием - C++
Код программы выполняет сортировку массива вставками. Как сюда вставить код сортировки массива методом слияния, вместо метода вставками,что...

Как правильно вписать функцию в h-файл и правильно её отразить в основной функции? - 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...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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