![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Сириус |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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); уже какой-то бред. Наверное чего-то не знаю. Словом, врятли кому охото обьяснять, так что может у кого есть инфа в инете про эту сортировку? (практическая именно , для С++)..я кроме выше изложенного кода ниче не нашел. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |