zoukankan      html  css  js  c++  java
  • CountingSort

    package _Sort.Algorithm
    
    /**
     * https://www.geeksforgeeks.org/counting-sort/
     * It is not a comparison based sorting.
     * It running time complexity is O(n) with space proportional to the range of data.
     * */
    class CountingSort {
    
        fun sortArray(nums: IntArray) {
            val min = nums.min() ?: 0
            val max = nums.max() ?: 0
            var range = max - min + 1
            if (range <= 0) {
                range = 0
            }
            val countArray = IntArray(range)
            val output = IntArray(nums.size)
            //count each element in given array and place the count at the appropriate index
            for (num in nums) {
                countArray[num - min]++
            }
            //modify the count array by adding previous counts
            for (i in 1 until countArray.size) {
                countArray[i] += countArray[i - 1]
            }
            //set to output array and decreasing count array
            for (i in nums.size - 1 downTo 0) {
                val newIndex = countArray[nums[i] - min]
                output[newIndex - 1] = nums[i]
                //newIndex--
            }
            for (i in nums.indices) {
                nums[i] = output[i]
            }
            for (item in nums) {
                print(item)
                print(",")
            }
        }
    }
  • 相关阅读:
    Postfix邮件服务
    Python
    LVS
    MFS
    Apache
    Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
    shell 检测安装包
    shell ssh 批量执行
    shell 判断脚本参数
    bzoj 1500 修改区间 splay
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13073904.html
Copyright © 2011-2022 走看看