Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2009, 23:52   #1
CooCkoo
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 1
Восклицание Помогите разобраться в реализации поразрядной сортировки(код внутри)

вот решил изучать разные алгоритмы... и наткнулся на интересную, на мой взгляд поразрядную сортировку. Интересна не сама сортировка, а его реализация... помогите разобраться плз

const int bitsword=32;
const int bitsbyte=8;
const int bytesword=bitsword/bitsbyte;
const int R=1<<bitsbyte;

typedef int TYPE;
inline int digit(long A,int B)
{
return (A>>bitsbyte*(bytesword-B-1)&(R-1));
}

void exch(TYPE &A,TYPE &B)
{
TYPE C=A;
A=B;
B=C;
}

void compexch(TYPE &A,TYPE &B)
{
if (B<A) exch(A,B);
}

void insertion(TYPE a[], int l, int r)
{
int i;
for (i=r; i>l; i--)
compexch(a[i-1],a[i]);
for (i=l+2; i<=r; i++)
{
int j=i;
TYPE v=a[i];
while(v<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=v;
}
}

#define bin(A) l+count[A]
void radixMSD(TYPE a[], int l, int r, int d)//
{
int i,j, count[R+1];
const int maxN(100);
static TYPE aux[maxN];
if (d>bytesword) return;
if (r-1<=10)
{
insertion(a,l,r);
return;
}
for (j=0; j<R; j++)
count[j]=0;
for (i=l; i<=r; i++)
count[digit(a[i],d)+1]++;
for (j=1; j<R; j++)
count[j]+=count[j-1];
for (i=l; i<=r; i++)
aux[l+count[digit(a[i],d)]++]=a[i];
for (i=l; i<=r; i++)
a[i]=aux[i];
radixMSD(a,l,bin(0)-1,d+1);
for (j=0; j<R-1; j++)
radixMSD(a,bin(j),bin(j+1)-1,d+1);
}
CooCkoo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не получается разобраться в коде ! разъясните пожалуйста! код внутри! Lion_paint Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 09:30
Помогите пожалуйста в Pascal (Алгоритм сортировки) JayDe Помощь студентам 3 29.01.2009 19:13
Помогите в реализации идеи КатенокСПб HTML и CSS 2 27.10.2008 21:52
Помогите со способом реализации Airou Общие вопросы Delphi 5 28.04.2008 13:46
Помогите с программами реализации задачи Майхилла о стрелках и программа на Си++: Муравейник Elisaveta_9 Помощь студентам 0 04.12.2007 15:07