美文网首页
排序算法之8:计数排序 CountSort

排序算法之8:计数排序 CountSort

作者: 王然Gondole | 来源:发表于2017-05-25 17:23 被阅读0次

基本思想是,用待排序的数作为计数数组的下标,统计每个数字的个数。然后依次输出即可得到有序序列。

public class CountSort {
    public static void countSort(int[] arr) {
        if (arr == null || arr.length == 0)
            return;

        int max = max(arr); //寻找数组中最大值

        int[] count = new int[max + 1]; //建立临时数组, 长度为max+1
        Arrays.fill(count, 0);  //使用0填充数组中的元素

        //使用待排序数组的元素作为临时数组的下标,并且统计每个元素的个数
        for (int i = 0; i < arr.length; i++) {
            count[arr[i]] = count[arr[i]] + 1; 
        }

        
        int arrIndex = 0;
        for (int i = 0; i <= max; i++) {    //从0到max挨个遍历
            //遍历临时数组某下标对应的数组元素值,数组元素值代表下标值出现了几次,依次添加到目标数组
            for (int j = 0; j < count[i]; j++) {    
                arr[arrIndex++] = i; 
            }
        }
    }

    public static int max(int[] arr) {
        int max = Integer.MIN_VALUE;
        for (int ele : arr) {
            if (ele > max)
                max = ele;
        }

        return max;
    }
}
计数排序.gif

相关文章

  • python实现计数排序(CountSort)

    python实现【计数排序】(CountSort) 算法原理及介绍 计数排序不是基于比较的排序算法,其核心在于将输...

  • 排序算法之8:计数排序 CountSort

    基本思想是,用待排序的数作为计数数组的下标,统计每个数字的个数。然后依次输出即可得到有序序列。

  • leetcode-Array篇easy难度之数组指定顺序排序

    关键词 计数排序,指定顺序排序,TreeMap,countsort计数排序讲解 https://www.cnblo...

  • 排序算法-8---计数排序

    # 排序算法-8---计数排序 概念 计数排序(Counting sort)是一种稳定的线性时间排序算法。该算法于...

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 算法and数据结构

    算法 冒泡排序 选择排序 计数排序

  • 08-计数排序(Counting Sort)

    计数排序(Counting Sort) 本节内容,继续介绍排序算法,在本节内容之前,介绍过7种排序算法,那计数排序...

  • 排序算法

    常见排序算法 本文涉及的算法有:冒泡排序选择排序计数排序 冒泡排序 伪代码 流程图 选择排序 伪代码 流程图 计数...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • LeetCode大全

    1.常见排序算法: 常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、...

网友评论

      本文标题:排序算法之8:计数排序 CountSort

      本文链接:https://www.haomeiwen.com/subject/ynezxxtx.html