排序|Java排序算法(八)--基数排序(RadixSort)

【排序|Java排序算法(八)--基数排序(RadixSort)】基数排序:需要借助radix个队列来暂时存储元素。
思想:
1.new一个元素为LinkedList的queue,用来存放各个基数的队列;
2.新建radix个元素为整数的queue1(命名一样),均存放在queue中;
3.根据最大元素的位数,对数组进行max_digits次分配和收集;
4.从低位到高位,计算data[j]的该位上的值r,放在queue中的第r个LinkedList中(需要借助临时的Linkedlist表queue2);
5.根据每一位的分配完成后,将LinkedListqueue中的数据从前到后收集起来一次(即对数组进行了一次排序)。

import java.util.LinkedList; publicstaticvoidradixSort (int[]data,intradix,intdigits){ //radix表示基数(进制),digits表示最大数值位数 LinkedList queue= new LinkedList(); for(int r =0; r queue1= new LinkedList (); queue.offer( queue1); //offer用于queue中(Linkedlist同时实现了List和queue接口),add用于List中 } //最大元素的位数,进行digits次分配和收集 for(int i =0; i queue2=queue .get(r ); queue2.offer( data[ j]); queue.set( r, queue2); } //将收集队列元素 int count =0; for(int k =0; k 0){ data[ count++]=(Integer) queue.get( k).poll(); } } } }

    推荐阅读