摘要:
本文记述了希尔排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 给定元素之间的间隔 h ,将所有间隔为 h 的元素作为独立的待排序范围,可以得到 h 个这样的子范围。针对每个子范围执行插入排序,使得任意间隔为 h 的元素是有序的。然后缩小间距 h,对新的子范围 阅读全文
摘要:
本文记述了针对冒泡排序微小改动的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 更少的比较可以节省一定的时间,此改动可以减少更小范围的比较。 (把水平陈列的数组逆时针旋转90°后,有助于理解后续的内容。) 将包含顶层以下的所有元素作为待排序范围,将该范围以上的所有 阅读全文
摘要:
本文记述了冒泡排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 (把水平陈列的数组逆时针旋转90°后,有助于理解后续的内容。) 将包含顶层以下的所有元素作为待排序范围,将该范围以上的所有元素作为已排序范围。通过一一比较相邻的两个元素,自底向上地将待排序范围内的 阅读全文
摘要:
本文记述了针对插入排序微小改动的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 内存中的数据交换是昂贵的操作,此改动实现了不需要交换的插入排序。 将第一个元素之后的所有元素作为待排序范围,将前面的所有元素作为已排序范围。通过一一比较,逐个将已排序范围内比第二个元素 阅读全文
摘要:
本文记述了插入排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 将第一个元素之后的所有元素作为待排序范围,将前面的所有元素作为已排序范围。通过一一比较,逐个交换已排序范围内比第二个元素大的所有元素,使第二个元素被插入到了正确的位置。然后将第二个元素之后的所有元 阅读全文
摘要:
本文记述了选择排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 将第一个元素及其之后的所有元素作为待排序范围,通过一一比较,查找待排序范围内的最小元素,将其与范围内的第一个元素交换。然后将第二个元素之后的所有元素作为新的待排序范围。重复以上的比较、查找和交换, 阅读全文
摘要:
本文记述了若干常用的 Vi 和 Vim 配置项。 配置项 含义 缩略名和反项名 set shiftwidth=4 缩进的宽度 set sw=4 set expandtab 将 tab 符转换为空格符 set noexpandtab, set et, set noet set softtabstop= 阅读全文
摘要:
本文简述了一个实现了顺序存储的容器类(Array),并对其进行了验证。 此 Array 类具有如下能力: 支持泛型 指定存储容量 可用列表(initializer_list)初始化 支持拷贝和移动语义 可按值或引用传递此类的对象,也可作为值返回 可用下标运算符访问元素 支持基于范围的循环 ◆ 实现 阅读全文
摘要:
本文描述了如何运用 type traits 来约束模板的类型参数,要求参数类型满足某种条件,例如,参数类型只能是某种类型的派生类。 ◆ 目的 如何能够约束模板的类型参数,在满足某种条件下模板才能成功地具体化? ◆ 解法 可以运用 type traits 来约束模板的类型参数。其要点在于用 typen 阅读全文
摘要:
本文摘译了《Matplotlib_3.3.4.pdf》 的 User‘s Guide > Tutorials > Introductory 中关于 Matplotlib 的若干基本概念,如下。 Matplotlib graphs your data on Figures, each of which 阅读全文