首页 > 代码库 > 基本排序Java实现(3)—— 计数排序
基本排序Java实现(3)—— 计数排序
计数排序是线性排序。
升序排序:
public void sortByAsc(int[] data) { if(data =http://www.mamicode.com/= null || data.length <= 1)"边界不能为负数"); return; } /** count sort */ countSortByAsc(data,range); } private void countSortByAsc(int[] data, int range) { /**建一个长度为range+1的的数组countArray,里面的每一个元素初始都置为0(Java里面默认就是0)。*/ int[] countArray = new int[range + 1]; /**遍历待排序的数组,计算其中的每一个元素出现的次数,比如一个key为i的元素出现了3次,那么countArray[i]=3。*/ for(int i = 0;i < data.length; i++){ int val = data[i]; if(val < 0 || val > range){ System.out.println("下标超界"); return; } countArray[val] += 1; } for(int i = 0,index = 0;i < countArray.length ; i++){ for(int j = 0; j <countArray[i];j++ ){ data[index] = i; index++; } } }
降序排序:
public void sortByDesc(int[] data) { if(data =http://www.mamicode.com/= null || data.length <= 1)"边界不能为负数"); return; } /** count sort */ countSortByDesc(data,range); } private void countSortByDesc(int[] data, int range) { /**建一个长度为range+1的的数组countArray,里面的每一个元素初始都置为0(Java里面默认就是0)。*/ int[] countArray = new int[range + 1]; /**遍历待排序的数组,计算其中的每一个元素出现的次数,比如一个key为i的元素出现了3次,那么countArray[i]=3。*/ for(int i = 0;i < data.length; i++){ int val = data[i]; if(val < 0 || val > range){ System.out.println("下标超界"); return; } countArray[val] += 1; } for(int i = countArray.length - 1,index = 0;i >=0 ; i--){ for(int j = 0; j <countArray[i];j++ ){ data[index] = i; index++; } } }
基本排序Java实现(3)—— 计数排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。