随笔分类 -  算法与数据结构

摘要:本文记述了自顶向下归并排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 使用自顶向下的分治思想进行排序。将待排序元素分为两个待排序子范围,用递归的方式对两个子范围分别排序。然后将排序结果归并起来,即得到整体排序的结果。归并两个已排序的子范围时,需要借助临时的存 阅读全文
posted @ 2024-04-22 14:36 green-cnblogs 阅读(32) 评论(0) 推荐(0) 编辑
摘要:本文记述了希尔排序采用另一个间隔序列的基本思想和参考实现,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 在前一篇希尔排序文章中,用到了简单的间隔序列 1, 4, 13, 40, ... (h = 3*h + 1)。本文参考了《算法(第4版)》练习题 2.1.29,用到的间隔序列为 1, 5 阅读全文
posted @ 2024-04-17 15:15 green-cnblogs 阅读(34) 评论(0) 推荐(0) 编辑
摘要:本文记述了希尔排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 给定元素之间的间隔 h ,将所有间隔为 h 的元素作为独立的待排序范围,可以得到 h 个这样的子范围。针对每个子范围执行插入排序,使得任意间隔为 h 的元素是有序的。然后缩小间距 h,对新的子范围 阅读全文
posted @ 2024-04-16 11:00 green-cnblogs 阅读(34) 评论(0) 推荐(0) 编辑
摘要:本文记述了针对冒泡排序微小改动的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 更少的比较可以节省一定的时间,此改动可以减少更小范围的比较。 (把水平陈列的数组逆时针旋转90°后,有助于理解后续的内容。) 将包含顶层以下的所有元素作为待排序范围,将该范围以上的所有 阅读全文
posted @ 2024-04-12 20:17 green-cnblogs 阅读(13) 评论(0) 推荐(0) 编辑
摘要:本文记述了冒泡排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 (把水平陈列的数组逆时针旋转90°后,有助于理解后续的内容。) 将包含顶层以下的所有元素作为待排序范围,将该范围以上的所有元素作为已排序范围。通过一一比较相邻的两个元素,自底向上地将待排序范围内的 阅读全文
posted @ 2024-04-12 18:50 green-cnblogs 阅读(25) 评论(0) 推荐(0) 编辑
摘要:本文记述了针对插入排序微小改动的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 内存中的数据交换是昂贵的操作,此改动实现了不需要交换的插入排序。 将第一个元素之后的所有元素作为待排序范围,将前面的所有元素作为已排序范围。通过一一比较,逐个将已排序范围内比第二个元素 阅读全文
posted @ 2024-04-08 11:12 green-cnblogs 阅读(10) 评论(0) 推荐(0) 编辑
摘要:本文记述了插入排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 将第一个元素之后的所有元素作为待排序范围,将前面的所有元素作为已排序范围。通过一一比较,逐个交换已排序范围内比第二个元素大的所有元素,使第二个元素被插入到了正确的位置。然后将第二个元素之后的所有元 阅读全文
posted @ 2024-04-07 13:49 green-cnblogs 阅读(14) 评论(0) 推荐(0) 编辑
摘要:本文记述了选择排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 将第一个元素及其之后的所有元素作为待排序范围,通过一一比较,查找待排序范围内的最小元素,将其与范围内的第一个元素交换。然后将第二个元素之后的所有元素作为新的待排序范围。重复以上的比较、查找和交换, 阅读全文
posted @ 2024-04-02 14:42 green-cnblogs 阅读(26) 评论(0) 推荐(0) 编辑
摘要:本文记述了笔者所写算法文章中涉及的若干基础类的主要 API(部分参考 算法(第4版) 实现,包括顺序存储结构、基础类的包装类、链式栈和队列、随机数、标准输入输出等。 ◆ Array<_T> 简单的顺序存储容器 公有函数 说明 Array(int = 0) 按指定大小构建 Array(initiali 阅读全文
posted @ 2024-03-22 10:49 green-cnblogs 阅读(12) 评论(0) 推荐(0) 编辑
摘要:本文简述了一个实现了顺序存储的容器类(Array),并对其进行了验证。 此 Array 类具有如下能力: 支持泛型 指定存储容量 可用列表(initializer_list)初始化 支持拷贝和移动语义 可按值或引用传递此类的对象,也可作为值返回 可用下标运算符访问元素 支持基于范围的循环 ◆ 实现 阅读全文
posted @ 2024-01-15 17:54 green-cnblogs 阅读(12) 评论(0) 推荐(0) 编辑
摘要:本文列举了对于《算法(第4版)》(以下简称原书或书)中的练习题 1.1.27 的三种解法(C++ 实现),并对包含原书题中的递归方法在内的四种解法的执行时间进行了统计和对比。 ◆ 要求 原书中的练习题 1.1.27 要求对如下二项分布递归过程中的值保存在数组中, b(n,k,p) = 1.0 ( n 阅读全文
posted @ 2023-04-19 14:51 green-cnblogs 阅读(243) 评论(1) 推荐(2) 编辑

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