Hi, ChengYu!

You got to put the past behind you before you can move on.

  • 海上月是天上月,眼前人是心上人。

    随笔分类 -  算法 / 排序

    摘要:基数排序 基数排序(radix sort)的核心思想与计数排序一致,也通过统计个数来实现排序。计数排序适用于数据量n较大但数据范围m比较小的情况。假设我们需要对n=106个学号进行排序,而学号是一个8位数字,这意味着数据范围m=108非常大,使用计数排序需要分配大量内存空间,而基数排序可以避免这种情 阅读全文
    posted @ 2024-11-05 17:07 风陵南 阅读(38) 评论(0) 推荐(1) 编辑
    摘要:计数排序 计数排序(counting sort)通过统计元素数量来实现排序,通常应用于整数数组。 简单实现 给定一个长度为n的数组nums,其中的元素都是“非负整数”,计数排序的整体流程如下: 遍历数组,找出其中最大的数组,记为m,然后创建一个长度为 m+1 的辅助数组counter。 借助coun 阅读全文
    posted @ 2024-10-29 10:09 风陵南 阅读(79) 评论(0) 推荐(0) 编辑
    摘要:桶排序 前面的快速排序、归并排序、堆排序等都是属于“基于比较的排序算法”,它们通过比较元素间的大小来实现排序。此类排序算法的时间复杂度无法超越O(nlogn)。下面介绍几种“非比较排序算法”,它们的时间复杂度可以达到线性阶。 桶排序(bucket sort)是分治策略的一个典型应用。它通过设置一些具 阅读全文
    posted @ 2024-10-18 10:13 风陵南 阅读(55) 评论(0) 推荐(0) 编辑
    摘要:堆排序 堆排序(heap sort)是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序。 输入数组并建立小顶堆,此时最小元素位于堆顶。 不断执行出堆操作,依次记录出堆元素,即可得到从小到大排序的序列。 以上方法虽然可行,但需借助一个额外数组来保存弹 阅读全文
    posted @ 2024-10-17 10:43 风陵南 阅读(152) 评论(0) 推荐(0) 编辑
    摘要:归并排序 归并排序(merge sort)是一种基于分治策略的排序算法,包含下图所示的“划分”和“合并”阶段。 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 合并阶段:当子数组长度为1时终止划分,开始合并,持续地讲左右两个较短的有序数组合并为一个较长的有序数 阅读全文
    posted @ 2024-09-27 13:35 风陵南 阅读(248) 评论(0) 推荐(0) 编辑
    摘要:快速排序 快速排序(quick sort)是一种基于分治策略的排序算法,运行高效,应用广泛。 快速排序的核心操作是“哨兵划分”,其目标是::选择数组中的某个元素作为“基准数”,将所有小于基准数的元素移到其左侧,而大于基准数的元素移到其右侧。具体流程如下: 选取数组最左端元素作为基准数,初始化两个指针 阅读全文
    posted @ 2024-09-26 16:33 风陵南 阅读(67) 评论(0) 推荐(0) 编辑
    摘要:简单排序算法 时间复杂度均为O(n2) 选择排序 选择排序(selection sort)的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序的区间的末尾。 算法流程 设数组长度为n,选择排序的算法流程如下。 初识状态下,所有元素未排序,即未排序(索引)区间为[1, n- 阅读全文
    posted @ 2024-09-26 10:35 风陵南 阅读(197) 评论(0) 推荐(0) 编辑

    点击右上角即可分享
    微信分享提示