sorting - Radix sort in java help -


hi need improve code. trying use radixsort sort array of 10 numbers (for example) in increasing order.

when run program array of size 10 , put 10 random int numbers in 70 309 450 279 799 192 586 609 54 657

i out:

450 309 192 279 54 192 586 657 54 609

don´t see error in code.

class intqueue {    static class hlekkur   {     int tala;     hlekkur naest;   }    hlekkur fyrsti;   hlekkur sidasti;   int n;    public intqueue()   {     fyrsti = sidasti = null;   }     // first number in queue.   public int first()   {     return fyrsti.tala;   }     public int get()   {     int res = fyrsti.tala;     n--;     if( fyrsti == sidasti )       fyrsti = sidasti = null;     else       fyrsti = fyrsti.naest;     return res;   }     public void put( int )   {     hlekkur nyr = new hlekkur();     n++;     nyr.tala = i;     if( sidasti==null )     f yrsti = sidasti = nyr;     else     {       sidasti.naest = nyr;       sidasti = nyr;     }   }     public int count()   {     return n;   }    public static void radixsort(int [] q, int n, int d){     intqueue [] queue = new intqueue[n];      (int k = 0; k < n; k++){       queue[k] = new intqueue();     }     (int = d-1; >=0; i--){       (int j = 0; j < n; j++){         while(queue[j].count() != 0)         {           queue[j].get();         }       }       (int index = 0; index < n; index++){         // trying @ 1 of 3 digit sort after.         int v=1;         int digit = (q[index]/v)%10;         v*=10;          queue[digit].put(q[index]);       }       (int p = 0; p < n; p++){         while(queue[p].count() != 0) {           q[p] = (queue[p].get());         }       }     }   } } 

i thinking can let function take 1 queue argument , on return queue in increasing order? if how?

please help. sorry if english bad not in it.

please let know if need more details.

import java.util.random; public class radtest extends intqueue {      public static void main(string[] args)     {         int [] q = new int[10];         random r = new random();         int t = 0;         int size = 10;         while(t != size)         {             q[t] = (r.nextint(1000));             t++;         }          for(int = 0; i!= size; i++)         {             system.out.println(q[i]);         }          system.out.println("radad: \n");         radixsort(q,size,3);          for(int = 0; i!= size; i++)         {             system.out.println(q[i]);         }      } } 

hope talking about...


thank answer, it. not looking solve problem me. looking , ideas how can solve it.

in task says:

implement radix sort function integers sorts queues. function should take 1 queue argument , on return queue should contain same values in ascending order may assume values between 0 , 999.

can put 100 int numbers on queue , use radixsort function sort or need put numbers in array , array in radixsort function use queues?

i understand needed put numbers in int queue , put queue function has not worked.

but thank answers @ them , try solve problem. if think can please leave comment.

this works test cases tried. it's not entirely documented, think that's okay. i'll leave read it, compare you're doing, , find out why have might different mine in philosophy. there's other things marked did them "lazy" way, , should them better way.

import java.util.*; class radix {      static int[] radixsort(int[] arr) {         // bucket used in method, declare here         // i'm not 100% sure recommend doing in production code         // turns out, it's legal do!         class bucket {             private list<integer> list = new linkedlist<integer>();             int[] sorted;              public void add(int i) { list.add(i);  sorted = null;}              public int[] getsortedarray() {                 if(sorted == null) {                     sorted = new int[list.size()];                     int = 0;                     for(integer val : list) {                         sorted[i++] = val.intvalue(); // autobox, oh                     }                     arrays.sort(sorted); // use whatever method want sort here...                                           // arrays.sort isn't allowed                 }                 return sorted;             }         }          int maxlen = 0;         for(int : arr) {             if(i < 0) throw new illegalargumentexception("i don't deal negative numbers");             int len = numkeys(i);             if(len > maxlen) maxlen = len;         }          bucket[] buckets = new bucket[maxlen];          for(int = 0; < buckets.length; i++) buckets[i] = new bucket();         for(int : arr) buckets[numkeys(i)-1].add(i);          int[] result = new int[arr.length];         int[] posarr = new int[buckets.length]; // int 0          for(int = 0; < result.length; i++) {             // 'best' element, appropriate             // set of earliest unused elements each bucket             int best = -1;             int bestpos = -1;             for(int p = 0; p < posarr.length; p++) {                 if(posarr[p] == buckets[p].getsortedarray().length) continue;                 int oldbest = best;                 best = bestof(best, buckets[p].getsortedarray()[posarr[p]]);                 if(best != oldbest) {                     bestpos = p;                 }               }             posarr[bestpos]++;             result[i] = best;         }          return result;      }      static int bestof(int a, int b) {         if(a == -1) return b;         // you'll have write :)         string = a+"";         string bs = b+"";         if(as.compareto(bs) < 0) return a;         return b;     }      static int numkeys(int i) {         if(i < 0) throw new illegalargumentexception("i don't deal negative numbers");         if(i == 0) return 1;         //return (i+"").length(); // lame method :}         int len = 0;         while(i > 0) {             len++;             /= 10;         }         return len;     }      public static void main(string[] args) {          int[] test = {1, 6, 31, 65, 143, 316, 93, 736};         int[] res = radixsort(test);         for(int : res) system.out.println(i);     } } 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -