首页 > 其他分享 >基数排序1111

基数排序1111

时间:2024-10-20 23:46:50浏览次数:3  
标签:arr 0123456011 int void 1111 基数排序 public

相对于其他排序,基数排序不是将两个数作比较,通过将他们的个,十,百,千等位存入对应的桶中,桶可以为10个,对应着0-9,还有一点如果数字的最大位不同,那需将其他小于最大位的数前面补0,保持与最大位的数的位一致。进入的顺序和出去的顺序是一致的


013021011052062043
0123456
021,011052,062043,013
021011052062013043
0123456
011,013021043052062
0123456
011,013,021,043,052,062

遇到最大位程序结束,将桶中的元素一一倒出,

接下来详细分析定义一个数组来接受个,十,百位每个数字出现的次数,

然后将前一项出现次数与这一项项加

再将数从右到左排进桶中(相当于找下标)

013021011052062043
下标012345
个位出现次数022300
012345
加后(相当于<=下标的数有几个)024666
024566
023566
0225
0125
0025
0024
排入桶中(当每排入一个数,加后中数要减一)012345
021011052062013043

public class radixSort {
    public static void main(String[] args) {
        int[] arr={13,21,11,52,62,43};
        RadixSort(arr);
        for(int nums:arr){
            System.out.println(nums);
        }
    }
    public static void RadixSort(int[] arr){
        if(arr.length<2){
            return;
        }
        sort(arr,0,arr.length-1,digit(arr));
    }
    //计算位数
    public static int digit(int[] arr){
        int max=Integer.MIN_VALUE;
        for(int i=0;i<arr.length;i++){
            max=Math.max(max,arr[i]);
        }
        int count=0;
        while(max!=0){
            max/=10;
            count++;
        }
        return count;
    }
    public static  void sort(int[] arr,int l,int r,int digit){
        final int count=10;
       int[] bucket=new int[r-l+1];//这是一桶,用于接收排序后的数
       int n=0;
       int b=0;
       int c=0;
       for(int i=1;i<=digit;i++){
           int[] count1=new int[count];//储存每次得到个,十,百,的次数
           for(int j=l;j<=r;j++){
               n=getGit(arr[j],i);//得到次数
               count1[n]++;
           }
           for(int m=1;m<count;m++){
               count1[m]=count1[m]+count1[m-1];//然后将前一项出现次数与这一项项加
           }
           for(int a=r;a>=l;a--){
             bucket[count1[getGit(arr[a],i)]-1]=arr[a];
               count1[getGit(arr[a],i)]--;
           }
           for(b=l,c=0;b<=r;b++,c++){
               arr[b]=bucket[c];
           }

       }
    }
    public  static int getGit(int x,int digit){
        return ((x/(int)Math.pow(10,digit-1))%10);
    }

}

标签:arr,0123456011,int,void,1111,基数排序,public
From: https://blog.csdn.net/2301_81334009/article/details/143094317

相关文章

  • 11111
    #include<bits/stdc++.h>usingnamespacestd;structnode{   intd;   intn;};nodea[10000]={{0,0},{5,3},{4,5},{3,2},{2,0},{1,4}};intn=5,i,h=1;intinsert(){尾删}intpush(intx){头增   n++;   a[n].d=x;   a[n].n=h;   h=n;......
  • P11119 [ROI 2024 Day 2] 保持连接
    P11119[ROI2024Day2]保持连接设\(L_i,R_i\)分别表示覆盖了\(i\)的的线段中最靠左的左端点和最靠右的右端点,特殊的,如果没有覆盖,则\(L_i=R_i=i\)。显然所有\(R_i\)就刻画了一种局面。如果没有\(X\)的操作,设\(g_i\)表示从\(i\)出发到\([i,n]\)的重新连接的次数......
  • FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播1111
    FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播 合集-FFmpeg开发实战(55)  ​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMPStreamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRT......
  • Java算法之基数排序(Radix Sort)
    简介基数排序是一种非比较型整数排序算法,其原理是按照低位先排序,然后收集,再按照高位排序,再收集,依次类推,直到最高位。这种方法可以视为对每个位上的数字进行稳定的排序。算法步骤确定最大数的位数。对每一位进行排序:从最低位开始,使用稳定的排序算法(如计数排序)对当前位进......
  • 11112222222
    前言AdobeLightroomClassic为您提供强大的一键式工具和高级控件,使您的照片看起来很棒。轻松整理桌面上的所有照片,并以多种方式共享。使用LightroomClassic,您需要具备所有桌面编辑工具,才能充分发挥照片的作用。增强色彩,使沉闷的镜头充满活力,去除分散注意力的物体,并拉直歪斜的镜......
  • 安裝ComfyUI-Docker & 下載Model & Krita電繪軟件 & krita-ai-diffusion電繪插件 & AU
    1.0安裝ComfyUI-Dockergitclonehttps://github.com/YanWenKun/ComfyUI-Docker下載ComfyUI-Docker。sudochmod-R777*設置ComfyUI-Docker最高讀寫權限。dockerrmcomfyuidockerpullyanwk/comfyui-boot:latest下載Docker鏡像。mkdir./Comfy......
  • 排序算法 基数排序 RadixSort --C语言实现
    基数排序基数排序(radixsort)属于“分配式排序”(distributionsort),又称“桶子法”(bucketsort)或binsort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O(nlog(r)m),其中r为所采取的基数,而m为堆数......
  • LeetCode 1111. 有效括号的嵌套深度
    1111.有效括号的嵌套深度有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。详情参见题末「有效括号字符串」部分。嵌套深度 depth 定义:即有效括号字符串嵌套的层数,depth(A) 表示有效括号字符串 A 的嵌套深度。详情参见题末「嵌套深度」部分。有......
  • [Tkey] CF1526B I Hate 1111
    给定一个数,将它表示成若干个形如\(11,111,1111\cdots\)之类的数之和,判断有没有可行解考虑到一种贪心,即从高位开始依次向下减去每位数字,判断还能不能减动,减不动或者没减完就报告无解.显然这样的贪心仅在\(11,111,1111\cdots\)的出现次数之和不超过\(9\)时是稳定正确的,一......
  • 郑州轻工业大学ZZULIOJ1111~1123合集
    郑州轻工业大学zzulioj1111~1123合集本人小趴菜一颗,写博客是为了监督自己的学习以及分享学习资源给需要的人,欢迎大家评论区指出问题。同时由于本人比较懒,注释就不再写了,当然一些自己经常犯迷糊的地方还是会标注的,大家有什么问题也可以指出来,大家一起学习进步。郑州轻......