Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поразрядная сортировка, не могу понять 
:(
    Опции темы
Сириус
Дата 3.12.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 26.11.2005

Репутация: нет
Всего: нет



вот этот код надыбал с одного сайта

#include <iostream.h>
#include <stdlib.h>
#include <string.h>
//2 1 0
void radix (int byte, long N, long *source, long *dest)//N=10 source nash massiv iz 10 elementov
{
long count[256];
long index[256];
memset (count, 0, sizeof (count));//vse bayti count-a ravni 0
for ( int i=0; i<N; i++ ) count[((source[i])>>(byte*8))&0xff]++;//videlili v counte te elem. kotorie esth

index[0]=0;
for (i=1; i<256; i++ ) index[i]=index[i-1]+count[i-1];//v konechnom schete summa nakaplivaetsya
for ( i=0; i<N; i++ ) dest[index[((source[i])>>(byte*8))&0xff]++] = source[i];
}

void radixsort (long *source, long *temp, long N)
{
radix (0, N, source, temp);
radix (1, N, temp, source);
radix (2, N, source, temp);
radix (3, N, temp, source);
}



long data[3];
long temp[3];

void main (void)
{

cout<<"Vvedite chisla:";
for(int j=0;j<3;j++)
cin>>data[j];
radixsort (data, temp, 3);
for ( int i=0; i<3; i++ ) cout << data[i] << '\n';
}

Не могу понять как работает этот код..теоритически знаком как работает поразрядная сортировка (поочередно столбцы битов сортирует)..но в этом коде не ясно.
Смысл этих строк
for (i=1; i<256; i++ ) index[i]=index[i-1]+count[i-1];//v konechnom schete summa nakaplivaetsya
for ( i=0; i<N; i++ ) dest[index[((source[i])>>(byte*8))&0xff]++] = source[i];
и плюс потом далее в
radix (1, N, temp, source);
radix (2, N, source, temp);
radix (3, N, temp, source);

source[i])>>(byte*8)) когда двигаемся вправо, то левые ведь 0 заполняться должны? в Дейтле написанно что это машинно-зависимо..я там считал на числах 3 6 4..сортирует нормально, но вот с radix (1, N, temp, source); уже какой-то бред. Наверное чего-то не знаю.

Словом, врятли кому охото обьяснять, так что может у кого есть инфа в инете про эту сортировку? (практическая именно , для С++)..я кроме выше изложенного кода ниче не нашел.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.