java排序算法-计数排序

计数排序的思路

计数排序的基本思路:

  1. 确定取值范围: 遍历整个待排序的数组,确定数组中元素的取值范围,找到最小值和最大值。
  2. 创建计数数组: 创建一个计数数组,其长度为取值范围的大小,用于统计原始数组中每个元素出现的次数。
  3. 统计元素个数: 遍历原始数组,将每个元素出现的次数记录到计数数组中,计数数组的索引对应于元素的值。
  4. 累加计数数组: 对计数数组进行累加操作,每个位置的值等于其前面所有位置值之和。这一步的目的是确定每个元素在排序后的数组中的位置。
  5. 构建有序数组: 创建一个与原始数组等长的临时数组,遍历原始数组,根据累加计数数组确定每个元素在有序数组中的位置,同时更新计数数组中对应元素的计数。
  6. 得到排序结果: 此时,临时数组就是排序完成的结果。
java 复制代码
public class Sort {
    //5.计数排序
    public static int[] countingSort(int... array){
        int max=array[0],i,j;
        for(i=1;i<array.length;i++){
            if(array[i]>max){
                max=array[i];
            }
        }
        //新建max+1的整数数组
        int[] tempArray = new int[max+1];
        for (i = 0; i < array.length; i++) {
            tempArray[array[i]]++;
        }
        for (i = 0,j=0; i < tempArray.length; i++) {
            for (int k = 0; k < tempArray[i]; k++) {
                array[j++]=i;
            }
        }
        return array;
    }

    public static void main(String[] args) {
        int[] a={52,1,0,49,70,62,81,17};
        System.out.println(Arrays.toString(countingSort(a)));
    }
}

结果展示

相关推荐
CoovallyAIHub15 分钟前
应对不平衡数据集:MixUp、CutMix与Focal Loss实战指南
深度学习·算法·计算机视觉
NAGNIP38 分钟前
一文理解提示微调(Prefix Tuning/Prompt Tuning/P Tuning)
算法
薛定谔的算法1 小时前
深入探索 ES6 中的 Map 数据结构
前端·javascript·算法
CoovallyAIHub1 小时前
AI如何一眼看穿鱼群健康?看改进HRNet模型实现水下健康监测
深度学习·算法·计算机视觉
稳兽龙1 小时前
codeforces(1045)(div2)D. Sliding Tree
c++·算法··路径树
熙客1 小时前
树的常见算法及Java实现
算法
轴测君2 小时前
3 无重复字符的最长子串
数据结构·算法·leetcode
2501_924731112 小时前
智慧城市交通场景误检率↓78%!陌讯多模态融合算法实战解析
人工智能·算法·目标检测·视觉检测·智慧城市
PAK向日葵5 小时前
【算法导论】XHS 0824 笔试题解
算法·面试
2501_924534896 小时前
智慧零售商品识别误报率↓74%!陌讯多模态融合算法在自助结算场景的落地优化
大数据·人工智能·算法·计算机视觉·目标跟踪·视觉检测·零售