Radix sort help needed

Can someone please help me with this radix sort on a dictionary (linkedList from the java utils). I am trying to pass the linkedList into an array which the java apis say that you can do with the to.Array() method but I am getting the noninformative cannot resolve symbol. Like the theory here is that one I should be able to pass a linkedList into an array and two, that I should be able to sort the list by calling the substrings(1,MAX_LENGTH) and then do a minus one on the length for the recursive call. However, this is giving me fits at this point and I don't know if I am totally off track and this will never work or if I am just not thinking it through clearly.
Any help at all would be appreciated greatly...
import java.util.*;
public class radixSort
  //  radix sort using linked lists, where radixSort is not
  //  a method of the LinkeList class.
   public void radixSort(LinkedList listA)
   //*******************this is the line that's giving me fits***********************/
   java.util.LinkedList[] objArray = listA.toArray();
   final int MAX_LENGTH  =  8;    //  Strings are no more than 8 characters
   final int RADIX_SIZE = 26;    //  Alphabet has 26 letters
   // Use an array of 26 ArrayLists to groups the elements of the array
   createQueue[] groups = new createQueue[RADIX_SIZE];
   for (int x = 0; x < MAX_LENGTH; x++)
             for (int i; i < MAX_LENGTH; i++)
             groups = new createQueue();
          for (int position=MAX_LENGTH; position < 0; position--)
for (int scan=0; scan < MAX_LENGTH; scan++)
//ListIterator iter1 = listA.listIterator();
String temp = String.valueOf (listA[scan]);
String letter = temp.substring(0, position);
groups[letter].enqueue ((listA[scan]));
// gather numbers back into list
int num = 0;
for(int d=0; d<MAX_LENGTH; d++)
while (!(groups[d].isEmpty()))
numObj = groups[d].dequeue();
listA[num] = numObj.intValue();
num++;
//****************************Here is the createQueue class...***********************/
public class createQueue
* Construct the queue.
public createQueue( )
front = back = null;
* Test if the queue is logically empty.
* @return true if empty, false otherwise.
public boolean isEmpty( )
return front == null;
* Insert a new item into the queue.
* @param x the item to insert.
public void enqueue( Object x )
if( isEmpty( ) ) // Make queue of one element
back = front = new ListNode( x );
else // Regular case
back = back.next = new ListNode( x );
* Return and remove the least recently inserted item
* from the queue.
public Object dequeue( )
if( isEmpty( ) )
//throw new UnderflowException( "ListQueue dequeue" );
          System.out.println("No elements");
else;
Object returnValue = front;
front = front.next;
return returnValue;
* Get the least recently inserted item in the queue.
* Does not alter the queue.
public Object getFront( )
if( isEmpty( ) )
System.out.println("No elements");
else;
return front;
* Make the queue logically empty.
public void makeEmpty( )
front = null;
back = null;
private ListNode front;
private ListNode back;
private void printans()
     if (isEmpty())
     System.out.println("No elements");
     else
     while (back != front)
     System.out.println (front);
     //front++;

java.util.LinkedList[] objArray = listA.toArray();Impossible! You are going to convert a LinkedList to an array of LinkedList. It's impossible! Or, sheer nonsense, if ever possible.

Similar Messages

  • Radix sort help again

    I created a linked list and are now trying to pass a word into a radix sort (which works outside of this particular program) so that it will sort the words and place them back into the appropriate places in the list. Just for the record, I haven't rewritten the part where it adds the sorted words back into the list so I know that part won't work right at the moment. I just need a work around for this error...
    java:197: non-static variable head cannot be referenced from a static context
    Here is the code...(does not include main cause main is long and complicated but it does work G)
    import java.util.Vector;
    public class neverishDictionary
        private Node head;
        public neverishDictionary()
             head = null;
        //begin inner node class
        private class Node
             private String word, pos, def, date, org;
             private Node next;
             public Node(String word1, String pos1, String def1, String date1, String org1)
             //1st constructor
                word = word1;
                pos = pos1;
                def = def1;
                date = date1;
                org = org1;
                next = null;
            public Node(String word1, String pos1, String def1, String date1, String org1, Node nextNode)
            //2nd constructor
                word = word1;
                pos = pos1;
                def = def1;
                date = date1;
                org = org1;
                next = nextNode;
            public String getWord()
                return word;
            public String getPos()
                return pos;
            public String getDef()
                return def;
            public String getDate()
                return date;
            public String getOrg()
                return org;
            public void setNext(Node nextNode)
                next = nextNode;
            public Node getNext()
                return next;
       }//ends the inner class
       public boolean isEmpty()
            return head == null;
       public void add(String newWord, String newPos, String newDef, String newDate, String newOrg)
            Node curr;
            Node prev;
            Node newNode = new Node (newWord, newPos, newDef, newDate, newOrg);
            if(isEmpty())
                newNode.setNext(head);
                head=newNode;
            else if(newWord.compareTo(head.getWord())<0)
                newNode.setNext(head);
                head=newNode;
            else
                prev = head;
                curr = head;
                while (curr != null)
                  if (newWord.compareTo(curr.getWord())<0)
                      prev.setNext(newNode);
                      newNode.setNext(curr);
                      break;
                   else
                       prev = curr;
                       curr = curr.getNext();
                       if (curr == null)
                           prev.setNext(newNode);
      public static Vector radixSort(Vector str1, Node prev, Node curr)
       Vector result = (Vector) str1.clone();
       final int MAX_LENGTH  =  8;    //  Strings are no more than 8 characters
       final int RADIX_SIZE = 26;    //  Alphabet has 26 letters
       int position = RADIX_SIZE;
       // Use an array of 26 ArrayLists to groups the elements of the array
        prev = null;
        curr = head;  // This is the line giving me fits and I'm not quite sure how to get around it.
        String str = curr.getWord();
       Vector[] buckets = new Vector[RADIX_SIZE];
        for (int i = 0; i < RADIX_SIZE; i++)
          buckets[i] = new Vector();
        int length = MAX_LENGTH;
        // Step through the positions from right to left, shoving into
        // buckets and then reading out again
        for (int pos = length-1; pos >=0; pos--) {
          // Put each string into the appropriate bucket
          for (int i = 0; i < MAX_LENGTH; i++) {
            str = (String) result.get(i);
            int bucketnum;
            // If the string is too short, shove it at the beginning
            if (str.length() <= pos)
              bucketnum = 0;
            else
              bucketnum = str.charAt(pos);
            buckets[bucketnum].add(str);
          // Read it back out again, clearing the buckets as we go.
          result.clear();
          for (int i = 0; i < MAX_LENGTH; i++) {
            result.addAll(buckets);
    buckets[i].clear();
    } // for(i)
    } // for(pos)
    // That's it, we're done.
    return result;
    } // sort

    Hello.
    As the error says, you are referencing a non-static member within a static function. Do a little reading on static functions. Basically you are assigning head to curr, but head has not been created yet, so the compiler is telling you it is a problem.

  • Radix Sort Help

    Hey I'm having a really hard time understanding the coding for the radix sort, could anyone possibly post a commented version of the radix sort preferrably done reccursively please? I'd really appreciate it.. or maybe someone can try to explain this
    http://www.cs.ubc.ca/~harrison/Java/RadixSortAlgorithm.java.html

    Well I found one that is easier to understand... here it is:
    import java.lang.*;
    import java.io.*;
    public class Radix{
        private static int q[],ql[];
        static{
            q = new int[256];
            ql = new int[256];
            for(int i=0;i<q.length;q[i++] = -1);
    public static void radixSort(int[] arr){
    int i,j,k,l,np[][] = new int[arr.length][2];
    for(k=0;k<2;k++){
    for(i=0;i<arr.length;np[0]=arr[i],np[i++][1]=-1)
    if(q[j=((255<<(k<<3))&arr[i])>>(k<<3)]==-1){
    ql[j] = q[j] = i;
    else{
    ql[j] = np[ql[j]][1] = i;
    for(l=q[i=];i<q.length;q[i++]=-1){
    for(l=q[i];l!=-1;l=np[l][1]){
    arr[j++] = np[l][0];
    public static void main(String[] args){
    int i;
    int[] arr = new int[3];
    System.out.print("original: ");
    for(i=0;i<arr.length;i++){
    arr[i] = (int)(Math.random() * 1024);
    System.out.print(arr[i] + " ");
    radixSort(arr);
    System.out.print("\nsorted: ");
    for(i=0;i<arr.length;i++)
    System.out.print(arr[i] + " ");
    System.out.println("\nDone ;-)");
    the bolded part is the main part I'm having some troubles understanding... The bitshifting and the ANDing operations, I don't see how it could ever equal -1... and also the swapping of the values.
    edit: it didn't bold.. but the parts that have the bold code
    Message was edited by:
    Reiny

  • Hmm,. another sorting, radix sorting help

    how can i possibly code a radix sort program that shows an output in every pass?? i have search the net but almost a lot of them does have an output of already sorted array.

    skyassasin16 wrote:
    how can i possibly code a radix sort program that shows an output in every pass??By sprinkling a bunch of System.out.println's in your code.
    i have search the net but almost a lot of them does have an output of already sorted array.Then change them if the source is available.

  • URGENT SORT HELP NEEDED

    Hey everyone...
    This is VERY time critical....
    Could someone give me a method that uses an Insertion Sort to sort an array of Strings??
    Please help!!!
    Thanks!!
    Lardiop

    Object[] arr = new Object[size];
    Object temp1;
    for(int i=2; i <= arr.length; i++) {
      for(int j=i-1; j > 0; j--) {
        if(arr[j].compareTo(arr[j - 1]) < 0) {
          temp1 = arr[j];
          arr[j] = arr[j - 1];
          arr[j - 1] = temp1;
    }

  • Hierarchical Query Sort help needed in 9i (9.2.0.6)

    Hello all, hope you guys are far away from IKE (it hit us pretty bad last weekend), anyway come to point
    My requirement is data sorted by name is such a way after parent show its childs (if exists) i.e first sort parents and then by childs within parants
    I am expecting this
    1     BBQU-1
    2     BBQU-1 Sub event 1
    3     BBQU-1 Sub event 2
    10     BBQU-1 Sub event 3
    6     BBQU-1 Birthday
    5     BBQU-1 Advance
    7     BBQU-2
    4     BBQU-2 Sub event
    from
    1     BBQU-1     
    5     BBQU-1 Advance     
    2     BBQU-1 Sub event 1     1
    3     BBQU-1 Sub event 2     1
    10     BBQU-1 Sub event 3     1
    6     BBQU-1 Birthday     
    7     BBQU-2     
    4     BBQU-2 Sub event     7
    Here is the script for table and data.
    create table no_more_ike (event_id number, event_name varchar2(30), subevent_id number);
    insert into no_more_ike values (1, 'BBQU-1', null);
    insert into no_more_ike values (5, 'BBQU-1 Advance', null);
    insert into no_more_ike values (2, 'BBQU-1 Sub event 1', 1);
    insert into no_more_ike values (3, 'BBQU-1 Sub event 2', 1);
    insert into no_more_ike values (10, 'BBQU-1 Sub event 3', 1);
    insert into no_more_ike values (6, 'BBQU-1 Birthday', null);
    insert into no_more_ike values (7, 'BBQU-2', null);
    insert into no_more_ike values (4, 'BBQU-2 Sub event', 7);
    commit;
    Thanks a lot

    Is this OK?
    select
       event_id,
       event_name,
       subevent_id
    from no_more_ike
    start with SUBEVENT_ID is null
    connect by prior EVENT_ID = SUBEVENT_ID
    order by decode(subevent_id, null, event_id, subevent_id) asc;

  • Dynamic sort help needed

    I am trying to implement a dynamic sort using pl/sql procedure
    with two IN params, which tell what column to sort by
    and wich direction. smth. like this
    procedure getEmployees (p_dept_no in employee.dept_no%type,
    p_sortBy in varchar2,
    p_sortDir in varchar2
    p_empl_cur in out emplCur
    ) is
    begin
    OPEN p_empl_cur
    FOR
    SELECT EMP_ID, F_NAME, L_NAME
    FROM EMPLOYEE
    WHERE DEPT_NO=p_dept_no
    ORDER BY p_sortBy p_sortDir ; --> this is the part that does not work
    -- I make sure that the params values are correct
    -- possible p_sortBy values: EMP_ID, F_NAME, L_NAME
    -- and p_sortDir: 'ASC' or 'DESC'
    end getEmployees;
    Thank you in advance.

    Try execute immediate.
    Some thing like this:
    PROCEDURE GETEMPLOYEES (P_DEPT_NO IN EMPLOYEE.DEPT_NO%TYPE,
    P_SORTBY IN VARCHAR2,
    P_SORTDIR IN VARCHAR2
    P_EMPL_CUR IN OUT EMPLCUR
    ) IS
    BEGIN
    OPEN P_EMPL_CUR
    FOR
    SORT_SQL := NULL;
    SORT_SQL := 'SELECT EMP_ID, F_NAME, L_NAME FROM EMPLOYEE'||
    ' WHERE DEPT_NO=P_DEPT_NO '||
    ' ORDER BY '||P_SORTBY||' '||P_SORTDIR||';'
    EXECUTE IMMEDIATE SORT_SQL INTO P_EMPL_CUR;
    Thanks
    Vasu
    I am trying to implement a dynamic sort using pl/sql procedure
    with two IN params, which tell what column to sort by
    and wich direction. smth. like this
    procedure getEmployees (p_dept_no in employee.dept_no%type,
    p_sortBy in varchar2,
    p_sortDir in varchar2
    p_empl_cur in out emplCur
    ) is
    begin
    OPEN p_empl_cur
    FOR
    SELECT EMP_ID, F_NAME, L_NAME
    FROM EMPLOYEE
    WHERE DEPT_NO=p_dept_no
    ORDER BY p_sortBy p_sortDir ; --> this is the part that does not work
    -- I make sure that the params values are correct
    -- possible p_sortBy values: EMP_ID, F_NAME, L_NAME
    -- and p_sortDir: 'ASC' or 'DESC'
    end getEmployees;
    Thank you in advance.

  • Advanced Group Sorting Help Needed

    In a previous thread,I was able to great two levels of hierarchy:
    1) Group by Case Worker
       2) All clients that pertained to their caseload (assigned client)
    The initial problem was, it was pulling duplicate records because each client had multiple instances of treatment plans, but I was more concerned about the most recent begin date. within Section Expert > Details, I use the following formula
    {AZCLPLAN.BEG_DATE} <> maximum ({AZCLPLAN.BEG_DATE}, {CDCLIENT.CASE_NUM})
    This successfully pulled the most recent treatment plan for the client record, ignoring all previous records. However, the case worker wants to see their caseload sorted by which treatment plans are ending first (AZCPLAN.END_DATE). When I add a new group END_DATE, move it up the hierarchy for sorting, it breaks my duplicate record sort rule.
    In laymen terms, after the report strips the duplicates only showing the most recent records, I want to do a sort by dates thereafter. how is this possible?

    I tried adding Record Sort Expert. By default the two hierarchy groups are locked at the top tiers. The 3rd item is solely the record file: ..END_DATE set to ascending.
    Under the Caseworker Group (highest tier) , next group in line is CASE_NUM. therefore, once a group is in place, it trumps anything below it (currently sorted by chart/case number). I tried changing the Group Expert > CASE_NUM to "original order" , but no luck.

  • Need help implementing Radix sort to handle negative values

    Hi !
    I'm in desperate need for some help here...
    I've been struggling with this Radix sort algorithm for some time now. It sorts positive integers very well, and very fast, but it cant handle negative values. Is there anyone who can help me improve this algorithm to also sort negative integer values?
    I need it to be as fast or even faster then the current one, and it has to be able to sort values in an array from address x -> y.
    Here's what I have so far
    /** sorts an int array using RadixSort (can only handle positive values [0 , 2^31-1])
          * @param a an array to be sorted
          * @param b an array of the same size as a (a.length) to be used for temporary storage
          * @param start start position in a (included)
          * @param stop stop position in a (excluded)
         public void sort(int[] a, int[] b, int start, int stop){
              int[] b_orig = b;
              int rshift = 0, bits = 8;
              for (int mask = ~(-1 << bits); mask != 0; mask <<= bits, rshift += bits) {
                   int[] cntarray = null;
                   try{cntarray = new int[1 << bits];}catch(Exception e){System.out.println("Error");};
                   for (int p = start; p < stop; ++p) {
                        int key = (a[p] & mask) >> rshift;
                        ++cntarray[key];
                   for (int i = 1; i < cntarray.length; ++i)
                        cntarray[i] += cntarray[i-1];
                   for (int p = stop-1; p >= start; --p) {
                        int key = (a[p] & mask) >> rshift;
                        --cntarray[key];
                        b[cntarray[key]+start] = a[p];
                   int[] temp = b; b = a; a = temp;
              if (a == b_orig)
                   System.arraycopy(a, start, b, start, stop-start);
         }I think it can be solved by offsetting all positive values the with the number of negative values found in "a" during the last run through the main for loop (as the last (or first) 8 bits in an 32 bit integer contains the prefix bit (first bit in an 32 bit integer), 0 for positive value, 1 for negative).
    Thanks in advance !
    /Sygard.

    ah, beautiful !
    /** sorts an int array using RadixSort (can handle values [-2^31 , 2^31-1])
          * @param a an array to be sorted
          * @param b an array of the same size as a (a.length) to be used for temporary storage
          * @param start start position in a (included)
          * @param stop stop position in a (excluded)
         public void sort(int[] a, int[] b, int start, int stop){
              int[] b_orig = b;
              int rshift = 0;
              for (int mask = ~(-1 << bits); mask != 0; mask <<= bits, rshift += bits) {
                   int[] cntarray = null;
                   try{cntarray = new int[1 << bits];}catch(Exception e){System.out.println("Error");};
                   if(rshift == 24){
                        for (int p = start; p < stop; ++p) {
                             int key = ((a[p] & mask) >>> rshift) ^ 0x80;
                             ++cntarray[key];
                        for (int i = 1; i < cntarray.length; ++i)
                             cntarray[i] += cntarray[i-1];
                        for (int p = stop-1; p >= start; --p) {
                             int key = ((a[p] & mask) >>> rshift) ^ 0x80;
                             --cntarray[key];
                             b[cntarray[key]+start] = a[p];
                        int[] temp = b; b = a; a = temp;
                   else{
                        for (int p = start; p < stop; ++p) {
                             int key = (a[p] & mask) >>> rshift;
                             ++cntarray[key];
                        for (int i = 1; i < cntarray.length; ++i)
                             cntarray[i] += cntarray[i-1];
                        for (int p = stop-1; p >= start; --p) {
                             int key = (a[p] & mask) >>> rshift;
                             --cntarray[key];
                             b[cntarray[key]+start] = a[p];
                        int[] temp = b; b = a; a = temp;
              if (a == b_orig)
                   System.arraycopy(a, start, b, start, stop-start);
         }That's what I ended up with - and it works !
    Thanks a million !!

  • Help Needed: Radix Sort

    Hi,
    I am trying to implement Radix Sort algorithm in java. I want to sort some records according to Family Name then First Name. They are of different size so smaller names must be padded at the end with free spaces. They must be padded to the size of longest name.
    For example if we compare between "orange" and "apple", one free space must be added at the end of "apple" --> "apple ".
    I do not know what's the best way to figure out the name with maximum size.
    Is there any way better than iterating trough records and looking for the longest name?
    Any suggestions?
    Thanks

    Radix sort seems a pretty odd way to tackle this. However I reckon you could put the names into buckets by length, then leave the shorter ones out of the sort until you reach their last column, whereupon you put them into the pack first.

  • Radix Sort

    I need to lexicographically orginize a list of names. I looked over the internet to find comparisson methods and for what I could see the most efficient one is Radix Sort. Now, I didn't quite understood how it works and how can I use it. I'm a newbie in java so I didn't get most of the code I saw. Could you help me kinda giving me a quick example or something like on how to do it?
    Thanks in advance...

    There's a tutorial on Collections that you should read here:
    http://java.sun.com/docs/books/tutorial/collections/index.html
    And when you read that something is "the" most efficient algorithm for sorting, don't believe it. It's actually more complicated than that.

  • HELP NEEDED WITH ADDAPTER-DVI TO VGA.

    PLEASE ...HELP NEEDED WITH WIRING CROSS OVER....CAN YOU HELP WITH BACK OF PLUG CONNECTIONS...I SORTA UNDERSTAND THE PINOUTS BUT CANT MAKE AN EXACT MACH...WOULD LIKE TO BE 100% SURE...
    ......THIS ENSURES NO SMOKE!!!                                                                                           
    THE CARD IS AN ATI RADEON RX9250-DUAL HEAD-.........ADDAPTER IS DVI(ANALOG)MALE TO VGA(ANALOG)FEMALE.
    ANY HELP VERY MUCH APPRECIATED........ SEEMS YOU NEED TO BE ROCKET SCI TO ATTACH A BLOODY PICTURE...SO THIS HAS BEEN BIG WASTE OF FING TIME!

    Quote from: BOBHIGH on 17-December-05, 09:21:31
    Get over it mate !
    I find it easy t read CAPS...and if you dont like it ...DONT READ IT!
    And why bother to reply...some people have nothing better to do.
    Yes there chep and easy to come by...Ive already got a new one.
    All I wanted was to make a diagram of whats inside the bloody thing...it was a simple question and required a simple answer.
    NO NEED TO A WANKA !!
    I feel a bann comming up.
    Have you tryed Google ? really.. your question is inrelevant. No need to reply indeed.
    Why do you come here asking this question anyway ? is it becouse you have a MSI gfx card ? and the adapter has nothing to do with this ?
    You think you can come in here yelling.. thinking we have to put up with it and accept your style of posting. This is not a MSI tech center.. it's a user to user center.. Your question has nothing to do with MSI relavant things anyway's.
    Google = your friend.
    Quote from: BOBHIGH on 17-December-05, 09:21:31
    it was a simple question and required a simple answer
    Simple for who ? you (buying a new one) ? me ? we ?   .really...........
    Quote from: Dynamike on 16-December-05, 04:11:48
    1: There are allot of diffrent types of those adapters.
    If any of the mods have a problem about my reply.. please pm me.

  • Urgent help needed with un-removable junk mail that froze Mail!!

    Urgent help needed with un-removable junk mail that froze Mail?
    I had 7 junk mails come in this morning, 5 went straight to junk and 2 more I junked.
    When I clicked on the Junk folder to empty it, it froze Mail and I can't click on anything, I had to force quit Mail and re-open it. When it re-opens the Junk folder is selected and it is froze, I can't do anything.
    I repaired permissions, it did nothing.
    I re-booted my computer, on opening Mail the In folder was selected, when I selected Junk, again, it locks up Mail and I can't select them to delete them?
    Anyone know how I can delete these Junk mails from my Junk folder without having to open Mail to do it as it would appear this will be the only solution to the problem.

    Hi Nigel
    If you hold the Shift key when opening the mail app, it will start up without any folders selected & no emails showing. Hopefully this will enable you to start Mail ok.
    Then from the Mail menus - choose Mailbox-Erase Junk Mail . The problem mail should now be in the trash. If there's nothing you want to retain from the Trash, you should now choose Mailbox- Erase Deleted Messages....
    If you need to double-check the Trash for anything you might want to retain, then view the Trash folder first, before using Erase Junk Mail & move anything you wish to keep to another folder.
    The shift key starts Mail in a sort of Safe mode.

  • Radix Sort - Examining digits

    Hey guys, is there a way to examine the "X" digit within an element of an array? Example:
    nums[0] = 234
    nums[1] = 96
    nums[2] = 436
    nums[3] = 150
    If I wanted to find the "one's" digit in nums[0], how would I do it? We can obviously see that the digit is "4," but I need a way for the program to recognize that, and store it into a variable. Thanks in advance.

    Perhaps I should clarify my problem. Here is the full briefing.
    I need to use Radix Sort to order a list of positive integers. A Radix Sort makes as many passe through the list as there are digits in the largest number to be sorted. For example, if the largest integer in the list were 492, then the algorithm would make three passes through the list to sort it.
    In each pass through the list, the Radix Sort algorithm sorts the numbers based on a different digit, working from the least to the most significant digit. To do this, it uses an intermediate data strucutre, ques, an array of ten queues. Each number is placed into the queu corresponding to the value of the digit being examined. For example, in the first pass the digit in the one's place is considered, so the number 345 would be enqueued into ques[5]. The number 260 would be enqueed into ques[0]. In each pass, the algorithm moves the numbers to be sorted from the list to the array of queues and then back to the list,. After the last pass, the integers are in order, from smallest to largest.
    ]Step 1
    Taking each integer in the list in order, insert the integer into the queue corresponding to the value of the digit currently being examined. If the integer being examined does not have a digit at a given place value, 0 is assumed for that place value. For example, 95 has no digit in the hundred's place, so, when examining the hundred's digit, the algorithm would assume the value in the hundred's place is zero and enqueue 95 into ques[0].
    Step 2
    After all integers have been inserted into the appropriate queues, each queue is emptied in order into the array, starting with ques[0].
    For example, assume that array numbs contain the integers 380, 95, 345, 382, 260, 100, and 492. The sort will take three passes, because the largest integer in the array has 3 digits.
    Here is an example diagram.
    Pass I   (Examines the FIRST DIGIT, AKA "one's" digit)
    Nums Before Pass                                                                                 Nums After Pass
                                                               ques
    [0] 380                                                     [0]   380   260   100                                [0] 380
    [1] 95                                                       [1]                                                           [1] 260
    [2] 345                                                     [2]   382  492                                          [2] 100
    [3] 382                                                     [3]                                                           [3] 382
    [4] 250                                                     [4]                                                           [4] 492
    [5] 100                                                     [5]   95   345                                           [5] 95
    [6] 492                                                     [6]                                                           [6] 345
                                                                     ...goes all the way to [9]That is an example of Pass I.
    So my question is, how the heck do I examine only the first digit? I know how to find the maximum amount of digits, and I know how to sort it once I get them into the queues. However, I have no clue as to find out the individual one's, ten's, hundreds digit so that I can organize them into the queue. Thanks in advance.

  • Radix sort using integers

    Cany anyone help me convert my code to sort using integers and maybe using a Queue?
    Thanks in advance, I appreciate it.
    import java.util.*;
    public class RadixSort{
      String[] input;
      int maxLength;
      public RadixSort(String[] sa){
        input = sa;
        maxLength = input[0].length();
        for (int i = 1; i < input.length; ++i){
          if (input.length() > maxLength){
    maxLength = input[i].length();
    public String[] sort(){
    for (int i = maxLength -1; i > -1; --i){ //begin compare from the last char
    Arrays.sort(input, new RadixComparator(i));
    return input;
    // give two or more strings as command line args
    // ex. java RadixSort vouch wacky lover love banana ananas
    public static void main(String[] args){
    RadixSort rs = new RadixSort(args);
    String[] result = rs.sort();
    for (int i = 0; i < result.length; ++i){
    System.out.println(result[i]);
    class RadixComparator implements Comparator{
    int columnNum; //start from 0
    public RadixComparator(int col){
    columnNum = col;
    public int compare(Object o1, Object o2){
    char c1, c2;
    String s1 = (String)o1;
    String s2 = (String)o2;
    int l1 = s1.length();
    int l2 = s2.length();
    if (l1 < (columnNum + 1)){ //s1 too short
    if (l2 < (columnNum + 1)){ //both too short
    return 0;
    else{
    return -1;
    else if (l2 < (columnNum + 1)){ //s2 too short
    return 1;
    else{
    c1 = s1.charAt(columnNum);
    c2 = s2.charAt(columnNum);
    return (c1 - c2);

    sort using integersIf your integer set only contains positive numbers, you could readily use radix sort for strings for
    them. You could easily convert int[] to String[] and vice versa. If your integer set is a mix of
    positives and negatives, then you would have to run radix sort twice and concatenate the
    results. One for positives, and anothe for negatives -- the latter should be a reverse
    radix sort because -1234 is larger than -5678.

Maybe you are looking for