zoukankan      html  css  js  c++  java
  • 基数排序

    基数排序是一种使用关键字的排序算法,是一种不需要比较的排序算法。

     1 import java.util.Arrays;
     2 import java.util.LinkedList;
     3 import java.util.Queue;
     4 
     5 public class MyRadixSort {
     6     public static void main(String[] args) {
     7         int num[] = {10, 8, 33, 54, 1, 6, 12, 43, 32, 27};
     8         radixSort(num);
     9         System.out.println(Arrays.toString(num));
    10     }
    11 
    12     private static void radixSort(int[] num) {
    13         int m = getMax(num);   //用来寻找最大元素长度
    14         int n = 1;   //用来取位,1用来表示取个位数字,10用来表示十位数字
    15         //表示0-9的每一个桶
    16         Queue buckets[] = new Queue[10];
    17         for (int i = 0; i < buckets.length ; i++) {
    18             buckets[i] = new LinkedList();
    19         }
    20         /*
    21         不可以用Arrays.fill(buckets, new LinkedList<Integer>());
    22         因为该语句会将所有数组元素添加同一个队列对象,需要用不同的对象进行初始化
    23          */
    24         //当基数排序次数小于len时,继续进行基数排序
    25         while (n < m) {
    26             //使用基数排序时需要从低位开始,因为在比较过程中有些数字可能没有高位
    27             for (int x : num) {
    28                 int val = (x / n) % 10;
    29                 buckets[val].offer(x);
    30             }
    31 
    32             int k = 0;
    33             for (Queue queue : buckets) {
    34                 while (!queue.isEmpty()) {
    35                     num[k] = (int) queue.poll();
    36                     k++;
    37                 }
    38             }
    39             n *= 10;
    40         }
    41     }
    42 
    43     private static int getMax(int[] num) {
    44         int max = num[0];
    45         for (int i = 0; i < num.length; i++) {
    46             if (num[i] > max) {
    47                 max = num[i];
    48             }
    49         }
    50         return max;
    51     }
    52 }
  • 相关阅读:
    新建SVN仓库并上传项目
    如何查看某个端口被谁占用
    Sql Server系列:索引基础
    Sql Server系列:索引设计原则及优化
    Sql Server系列:键和约束
    Sql Server系列:Select基本语句
    Sql Server系列:Delete语句
    Sql Server系列:Update语句
    Sql Server系列:Insert语句
    Sql Server系列:数据控制语句
  • 原文地址:https://www.cnblogs.com/zz-1120-wtenlb/p/13376815.html
Copyright © 2011-2022 走看看