Leetcode中常用排序 之 O(n)时间复杂度排序

来源:互联网 发布:软件架构分析师 编辑:程序博客网 时间:2024/05/21 15:47

通过使用额外的空间,达到O(n)的时间复杂度的排序方法

直接上代码:

import java.util.HashMap;public class Ranking_O_n {    public int[]ranking(int []nums){        int []ranked=new int[nums.length];        int times=0, min=0,max=0,index=0;        HashMap<Integer,Integer>h=new   HashMap<Integer,Integer>();        for(int n:nums){            if(n<min)min=n;            if(n>max)max=n;            if(h.containsKey(n)){                times=h.get(n);                times++;                h.put(n,times);            }            else                 h.put(n, 1);        }        for(int n=min;n<=max;n++){            if(h.containsKey(n)){                times=h.get(n);                for(int i=0;i<times;i++){                    ranked[index]=n;                    index++;                }            }        }        return ranked;    }    public static void main(String[]args){        Ranking_O_n c=new Ranking_O_n();        int[]nums={1,2,1,1,2,3,5,6,10,2,55,2,33,44,28,48,21};        for(int n:c.ranking(nums)){            System.out.print(n+" ");        }    }}
0 0
原创粉丝点击