|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.06.2009, 23:52 | #1 |
Новичок
Джуниор
Регистрация: 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); } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не получается разобраться в коде ! разъясните пожалуйста! код внутри! | 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 |