• 算法模板之基数排序


    基数排序,简单点说就是从低位按照高位排序,所以浅显的判断,排序的时间消耗大抵是O(n)的。

    C++ 板子

    void radixsort(int n)
    {
    	int mx=*max_element(a,a+n);
    	int range=0,base=1;
    	while(mx) mx/=10,++range;
    	for(int i=0;i<range;i++)
    	{
    		for(int j=0;j<n;j++)
    		{			
    			int k = (a[j]/base) % 10;
    			radix[k][cont[k]] = a[j];
    			cont[k]++;
    		}
    		for(int j = 0,l=0;j < 10;j++)
    			for(int k = 0;k<cont[j];k++)
    				a[l++] = radix[j][k];
    		memset(cont,0,sizeof(cont));
    		base*=10;
    	}
    }
    

    JAVA 板子

    public static void radixSort(){
        List<List<Integer>> t = new ArrayList();
        for(int i=0;i<=9;i++) {
            t.add(new ArrayList<Integer>());
        }
        
        int n=a.length,mx = a[0];
        for(int d:a) mx=Math.max(mx,d);
        int len=String.valueOf(mx).length();
        int base=1;
        
        for(int i=0;i<len;i++) {
            for(int d:a) {
     			int p=(d/base)%10;
                t.get(p).add(d);           
            }
            base*=10;
            int cnt=0;
            for(List<Integer>tt: t){
                for(Integer d:tt){
                    a[cnt++]=d;
                }
                tt.clear();
            }
        }
    }
    
  • 相关阅读:
    JAVAEE学习day01
    learn MongoDB (二) 常用修改器
    learn MongoDB (一) 常用命令行操作
    js事件冒泡和捕获
    vim 常用设置
    void 0 等于 undefined 为什么不直接用undefined
    原生js操作class
    WAI-ARIA roles
    css 效果收集
    前端文章收集
  • 原文地址:https://www.cnblogs.com/backkom-buaa/p/13855327.html
Copyright © 2020-2023  润新知