Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void l_inSort(int* p,int start)
- {
- int i = start,j;
- if(!i)
- return;
- while(p[i]!=0)
- {
- j = start;
- while(p[p[j]+1]<p[p[i]+1] && p[j]!=i)
- j = p[j];
- int t = p[p[i]];
- if(j!=i)
- {
- p[p[i]] = p[j];
- p[j] = p[i];
- p[i] = t;
- }
- else
- i = p[i];
- }
- }
- void bucketSort(int* p,int l)
- {
- int* mem = new int[(l<<1) + 65536];
- int pos = 65536;
- for(int i = 0;i<65536;++i)
- mem[i] = 0;
- int mask = 65535;
- for(int i = 0;i<l;++i)
- {
- int t = mem[p[i]&mask];
- mem[p[i]&mask] = pos;
- mem[pos++] = t;
- mem[pos++] = p[i];
- }
- for(int i = 0;i<65536;++i)
- l_inSort(mem,i);
- int j = 0;
- for(int i = 0;i<65536;++i)
- {
- int t = mem[i];
- while(t)
- {
- p[j++] = mem[t+1];
- t = mem[t];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement