zoukankan      html  css  js  c++  java
  • 计数排序-不基于比较O(n)

    转自:https://www.cnblogs.com/kyoner/p/10604781.html

    1.基本过程

    计数排序,这种排序算法不是基于元素比较,而是利用数组下标来确定元素的正确位置。

    建立数组A,按照待排序数组的值B,根据每个B值对应A的下标++。有了这个统计结果,排序就很简单了,直接遍历数组,输出数组元素的下标值,元素的值是几,就输出几次

    适用于一定范围的整数排序在取值范围不是很大的情况下,它的性能在某些情况甚至快过那些O(nlogn)的排序,例如快速排序、归并排序。

    使用max-min,可以确保范围,如果有重复的数据元素,就累加,统计数组每个值表示的是对应值重新排序后的下标位置。

    2.复杂度

    如果原始数列的规模是N,最大最小整数的差值是M,时间复杂度是O(N+M)。和它的具体过程有关,首先遍历N统计次数,后来遍历M反向填充。

    如果不考虑结果数组,只考虑统计数组的话,空间复杂度是O(M)

    3.局限性

    1.当数列最大最小值差距过大时,并不适用于计数排序

    会导致空间的浪费

    2.当数列元素不是整数时,并不适用于计数排序

    无法形成空间。

    //这个是基序排序的基础。

  • 相关阅读:
    SharePoint 2010 新体验6 开发人员面板
    用JavaScript实现一个Timeline
    SharePoint 2010新体验2 – Ribbon界面
    SharePoint 2010 新体验5 Office Web Applications
    SharePoint 2010新体验1
    ES6 学习(1)
    ES6 学习(4) 字符串的扩展
    ES6学习(2)
    ES6 学习(5) 正则的扩展
    那些最近工作中遇到的插件
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14044130.html
Copyright © 2011-2022 走看看