zoukankan      html  css  js  c++  java
  • java数据结构-排序算法-基数算法

    package com.kuang;

    import java.util.Arrays;

    /**
    * @auther 付强
    * @date 2020/2/15 - 10:46
    */
    public class RadixSort {
    public static void main(String[] args) {
    int[] arr=new int[]{23,6,189,45,9,289,56,1,789,32,65,652,5};
    radixSort(arr);
    System.out.println(Arrays.toString(arr));
    }
    public static void radixSort(int[] arr){
    //存数组中最大的数字
    int max=Integer.MIN_VALUE;
    for (int i = 0; i < arr.length; i++) {
    if(arr[i]>max){
    max=arr[i];
    }
    }
    //知道最大数字是几位数
    int maxlength=(max+"").length();
    //用于存储临时数据的数组
    int[][] temp=new int[10][arr.length];
    System.out.println(maxlength);
    //根据最大长度的数决定比较的次数
    int[] counts=new int[10];
    for (int i = 0,n=1; i < maxlength; i++,n*=10) {
    //把每一个数字分别计算余数
    for (int j=0;j<arr.length;j++){
    //拿出余数
    int i1 = arr[j] / n % 10;
    //把当前遍历的数据放到指定的数组中
    temp[i1][counts[i1]]=arr[j];
    //记录数量
    counts[i1]++;
    }
    if(i==0){
    for(int []nums:temp){
    System.out.println(Arrays.toString(nums));
    }
    System.out.println(Arrays.toString(counts));
    }
    //记录取得元素需要放的位置
    int index=0;
    //把数字取出来
    for (int i1 = 0; i1 < counts.length; i1++) {
    //记录数量的数组中当前余数记录的数量不为0
    if(counts[i1]!=0){
    //循环取出元素
    for (int l=0;l<counts[i1];l++){
    //取出元素
    arr[index]=temp[i1][l];
    index++;
    }
    //把数量值为0
    counts[i1]=0;
    }
    }
    }
    }
    }
  • 相关阅读:
    Delphi公用函数单元
    Delphi XE5 for Android (十一)
    Delphi XE5 for Android (十)
    Delphi XE5 for Android (九)
    Delphi XE5 for Android (八)
    Delphi XE5 for Android (七)
    Delphi XE5 for Android (五)
    Delphi XE5 for Android (四)
    Delphi XE5 for Android (三)
    Delphi XE5 for Android (二)
  • 原文地址:https://www.cnblogs.com/fuqiang-java/p/12311124.html
Copyright © 2011-2022 走看看