选择排序、插入排序和冒泡排序
首先我们需要认识一个概念 Inversions 指的是在一个 $n$ 个数的集合中 $a_0…a_{n-1}$ 满足:$j<k$ 但 $a_j>a_k$ 的有序元组 $(a_j,a_k)$ 对于一个未排序的数组,就可以看成是由多个 Inversions 组成的 1. 选择排序 (Selection Sort) 先考虑以下情况: 有一个已排序的列表,其所有元素都小于未排序的...
首先我们需要认识一个概念 Inversions 指的是在一个 $n$ 个数的集合中 $a_0…a_{n-1}$ 满足:$j<k$ 但 $a_j>a_k$ 的有序元组 $(a_j,a_k)$ 对于一个未排序的数组,就可以看成是由多个 Inversions 组成的 1. 选择排序 (Selection Sort) 先考虑以下情况: 有一个已排序的列表,其所有元素都小于未排序的...
堆由“优先队列”引出; 优先队列的定义与操作 定义:与标准队列的“先进先出” 不同,优先队列允许弹出具有最高优先级的对象 ,一般定义 0 为最高优先级 。 优先队列的两种简单实现 多队列 (Multiple Queues) 方法:创建一个包含 M 个队列的数组,每个队列对应一个优先级。 分析:Push 操作为 $\Thet...
二分查找树(Binary Search Tree) 无重复元素 从左到右依次增大 寻找操作(Find) 核心想法是一直比较左右节点,然后向下查找,或赋值或递归 找最小 BinaryNode<Comparable>* findMin(BinaryNode<Comparable>* t) const { if (t == nullptr...
这份笔记是大一下复习C++时顺手整理的,可以服务于考试,也可以用于C++的实践了解,其主要注重于C++的三大特性(封装,继承,多态)。