【LeetCode】计数排序(python版)
发布日期:2021-05-08 05:47:52 浏览次数:20 分类:精选文章

本文共 776 字,大约阅读时间需要 2 分钟。

计数排序原理

计数排序算法并不通过直接比较数字的大小来确定位置,而是采用了一个独特的方法。它选择一个数作为基数,然后统计整个数列中有多少个数比基数小。如果有n个数比基数小,那么基数就被放到新数列的第n+1个位置上。

数列排序方法对比

以下是几种常见排序算法的实现代码和工作原理:

  • 冒泡排序 冒泡排序通过相邻元素的交换来逐步将较大的元素"冒"到末尾。虽然简单,但其时间复杂度为O(n²),在数据规模较小时表现尚可。

  • 选择排序 选择排序先在数列中找到最小的元素,并将其交换到当前位置,然后重复这个过程直到整个数列排序完成。其时间复杂度为O(n²),适用于数据范围较小时。

  • 插入排序 插入排序通过将一个元素插入已排序的子序列中来完成排序。它的时间复杂度为O(n²),常用于实现稳定排序。

  • 快速排序 快速排序通过分治法将数组划分为较小的子数组进行排序,递归处理每个子数组。其时间复杂度为O(n log n),在大多数情况下表现优异。

  • 计数排序实现

    计数排序算法实现代码如下:

    def countsort(iList): if len(iList) <= 1: return iList max_num = max(iList) size = len(iList) result = [0] * size for i in range(size): result[i] = 0 for j in range(size): if iList[j] <= max_num - i: result[i] += 1 elif iList[j] == max_num - i: break for i in range(size): result[i] += i return sorted(iList)

    注:以上代码仅为部分实现,完整代码需要根据具体需求进行补充和调整。

    上一篇:【LeetCode】归并排序(python版)
    下一篇:【LeetCode】快速排序(python版)

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月07日 18时34分03秒