十大排序算法之八:计数排序(Python)

一、计数排序简介
二、计数排序步骤
三、代码实现

一、计数排序简介

计数排序是将序列中的数值转化为数组的下标,当数字a出现一次时,就把数组中对应a下标的值加1。这些数据需要存放在额外开辟的数组空间中,计数排序的时间复杂度为线性的,它适用于在一定范围内的整数排序,在取值范围不是很大的情况下,它的性能可以超过那些时间复杂度为O(nlogn)的排序。

二、计数排序步骤

1、得到数列的最大值,作为申请数组空间的依据
2、根据数列最大值确定数组长度
3、遍历数列,填充数组
4、遍历数组,输出结果

三、代码实现

def countSort(arr=[]):
    max_value=max(arr) # 获取列表最大值
    # 根据最大值确定数组的长度,如果最大值是8,则数组的长度要为9,即[0,8]
    count_array=[0]*(max_value+1)
    for i in range(0,len(arr)):
        count_array[arr[i]] += 1 # 遍历数列,填充数组
    # 遍历数组,输出结果
    sorted_array=[] # 存放已经排好序的数列
    for i in range(0,len(count_array)):
        for j in range(0,count_array[i]):
            sorted_array.append(i)
    return sorted_array

if __name__=='__main__':
    array = [4,4,6,5,3,2,8,1,7,5,6,0,10]
    print(countSort(array))

十大排序算法之八:计数排序(Python)_第1张图片

你可能感兴趣的:(排序算法,排序算法,python,数据结构)