Python排序算法之计数排序

目录

  • 简介
  • 代码示例

简介

已知列表的元素范围在0100,设计一个复杂度为O(n)的算法

在类似这种情况下,计数排序比sorted还要快

代码示例

#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""计数排序

已知列表的元素范围在0到100,设计一个复杂度为O(n)的算法

在类似这种情况下,计数排序比sorted还要快
"""
import random


def count_sort(ls, max_count=100):
    """计数排序

    Args:
        :param ls: list, 待排序的列表
        :param max_count: int, 列表中元素最大的值
    """

    ltmp = [0 for _ in range(max_count + 1)]
    for item in ls:
        ltmp[item] += 1
    ls.clear()

    for index, item in enumerate(ltmp, start=0):
        # 对item个index循环
        for _ in range(item):
            ls.append(index)


ls = [random.randint(0, 100) for _ in range(100)]
random.shuffle(ls)
count_sort(ls)
print(ls)

你可能感兴趣的:(Python3)