字符串排序:键索引计数法

2017-05-09  本文已影响543人  我的轩辕

字符串排序有很多应用,比如车牌的排序,基因编码等。今天介绍一种低位优先的字符串排序算法,在介绍它之前先介绍另一种算法--键索引计数法,它是前者的基础。

键索引计数法

适用性:用于小整数键的算法

比如数组a={1,2,3,4,2,3,4,2,1,3,4,2,3,4},它里面重复的数字比较多,不重复的只有1,2,3,4,这时就可以用此方法

步骤

代码实现:

public class countSort {
    public static void  main(String[] args){
        int[] nums={2,3,4,1,2,4,3,1,2,2,1};
        countSort sort=new countSort();
        sort.indecCountIndex(nums);
    }

    public void indecCountIndex(int[] nums){
        int[] count=new int[6];
         //计算频率
        for(int i=0;i<nums.length;i++){
            count[nums[i]+1]++;
        }
       //将频率转化为索引
        for(int i=1;i<count.length;i++){
            count[i]=count[i]+count[i-1];
        }
      //数据分类
        int[] aux=new int[nums.length];
        for(int i=0;i<nums.length;i++){
            aux[count[nums[i]]++]=nums[i];
        }
      //回写数据(我这里是打印)
        for(int i=0;i<nums.length;i++){
            System.out.print(aux[i]+" ");
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读