zoukankan      html  css  js  c++  java
  • 计数排序(JS代码)

    计数排序就是简单的桶排序,一个桶代表数组中一个数出现的个数,所以需要一个和数组数字范围一样大的辅助数组,一般用在范围小于100的排序,时间复杂度为O(n),空间复杂度为数组的数字范围。

    Array.prototype.countSort = function() {
    	let len = this.length
    	if (len < 2) {
    		return
    	}
    	// 桶数组
    	var suportArr = new Array(len + 1);
    	// 结果数组
    	var resArr = new Array(len);
    	// 初始化桶数组
    	for (i = 0; i < suportArr.length; i++) {
    	    suportArr[i] = 0;
    	}
    	// 待排序数组中的数组出现,在桶子对应位置+1代表这个数出现的个数+1了
    	for (let i = 0; i < len; i++) {
    	    suportArr[arr[i]]++;
    	}
       	// 从第1项开始,桶数组加上前一个桶的个数,现在辅助数组的意义变成了每一项的排名了。
      	for (let i = 1; i < suportArr.length; i++) {
        	suportArr[i] += suportArr[i - 1];
      	}
      	// 根据辅助数组的排名,从后往前赋值
      	for (let i = len - 1; i >= 0; i--) {
    	    resArr[suportArr[arr[i]] - 1] = arr[i];
    	    suportArr[arr[i]]--;
      	}
    	// 这里this不能直接赋值数组,我们就只能采取splice剪切数组再替换新的
    	this.splice(0, this.length, resArr)
    }
    let arr = [2,9,5,7,1,1,6,3,3,4]
    arr.countSort()
    console.log("c排序后:", arr.toString())
    // 1,1,2,3,3,4,5,6,7,9
    

      

  • 相关阅读:
    Python并行编程(十三):进程池和mpi4py模块
    Python 列表集合 字典推导式、生成器表达式
    Python 迭代对象、迭代器
    Python 参数,嵌套函数 的变量 使用
    Python 编码进阶
    Python 深浅Copy
    Python 代码块、缓存机制
    Python 列表,字典 相关方法
    初识 python 字符串 相关函数
    初识编码格式
  • 原文地址:https://www.cnblogs.com/bobo1/p/12504327.html
Copyright © 2011-2022 走看看