zoukankan      html  css  js  c++  java
  • 算法模板之基数排序

    基数排序,简单点说就是从低位按照高位排序,所以浅显的判断,排序的时间消耗大抵是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();
            }
        }
    }
    
  • 相关阅读:
    Day-5 python
    Day-2 python
    OCR技术浅探
    yael图像检索库
    编程语言
    BOW模型和SIFT特征
    汉明嵌入
    Lua1.1 Lua 的参考手册 (三)
    Lua1.1 Lua 的参考手册 (二)
    Lua1.1 Lua 的参考手册 (一)
  • 原文地址:https://www.cnblogs.com/backkom-buaa/p/13855327.html
Copyright © 2011-2022 走看看