基數排序 Java排序算法

import java.util.ArrayList;
import java.util.List;

public class radixSort {
    int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51};
public radixSort(){
    sort(a);
    for(int i=0;i<a.length;i++)
        System.out.println(a[i]);
}
public  void sort(int[] array){   

            //首先確定排序的趟數;   
        int max=array[0];   
        for(int i=1;i<array.length;i++){   
               if(array[i]>max){   
               max=array[i];   
               }   
            }   

    int time=0;   
           //判斷位數;   
            while(max>0){   
               max/=10;   
                time++;   
            }   

        //建立10個隊列;   
            List<ArrayList> queue=new ArrayList<ArrayList>();   
            for(int i=0;i<10;i++){   
                ArrayList<Integer> queue1=new ArrayList<Integer>(); 
                queue.add(queue1);   
        }   

            //進行time次分配和收集;   
            for(int i=0;i<time;i++){   

                //分配數組元素;   
               for(int j=0;j<array.length;j++){   
                    //得到數字的第time+1位數; 
                   int x=array[j]%(int)Math.pow(10, i+1)/(int)Math.pow(10, i);
                   ArrayList<Integer> queue2=queue.get(x);
                   queue2.add(array[j]);
                   queue.set(x, queue2);
            }   
                int count=0;//元素計數器;   
            //收集隊列元素;   
                for(int k=0;k<10;k++){ 
                while(queue.get(k).size()>0){
                    ArrayList<Integer> queue3=queue.get(k);
                        array[count]=queue3.get(0);   
                        queue3.remove(0);
                    count++;
              }   
            }   
          }   

   }  

}
 本文由用戶 SimoneNewco 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!