用Java实现基数排序

用Java实现基数排序,第1张

用Java实现基数排序 堆排序基本思想

堆排序是基于桶排序发展而来的
堆排序是将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。
这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列.
简单来说是准备0到9号10个桶
数组里面的数字的最后一位是几就放到几号桶里面,
全部放完就按桶的顺序再把那些数字都拿出来
然后按这样的规则放倒数第二位 直到位数最多的那个数的全部位数都进行过这样的运算

基数排序的实现

将数组传入到排序函数中去

public static void main(String[] args) {
        int arr[] ={53,3,542,78,214};
        Sort(arr);//sort就是基数排序
    }

下面是排序的实现

 public static void Sort(int arr[]){
        int max=0;
        for (int i=0;imax){
                    max=arr[i];
                }
        }

        int maxLength=(""+max).length();
        int bucket[][] =new int [10][arr.length];
        int [] bucketElementCounts=new int [10];
        for (int j=0,n=1;j 

上面的排序一共有三个部分分别是
1.找最大值然后输出最大值一共有几位

  int max=0;
        for (int i=0;imax){
                    max=arr[i];
                }
        }

        int maxLength=(""+max).length();

在一个循环中执行2,3步 循环的次数就是数组中最大数的位数
2.把数组的数字放到桶里面
3.把桶里面的数字拿出来

for (int j=0,n=1;j 

l是当前数组的第几个数字 number是为了得到当前位数的数字
bucketElementCounts[]是个一位数组
它是为了记录桶里面有几个数字
比如bucketElementCounts[0]=1 就是0号桶里面有1个数字

   for(int l=0;l< arr.length;l++){
                int number =arr[l] / n % 10;
                bucket[number][bucketElementCounts[number]]=arr[l];
                bucketElementCounts[number]++;
            }

下面这是为了把桶里面的数字给重新放回到数组里面

			int port=0;
            for (int k=0;k<10;k++){
                if(bucketElementCounts[k]!=0){

                    for(int l=0;l					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5692773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存