Browse Category

排序算法

算法-深入归并排序

归并排序的理解和实现

原理

  1. 将整个序列看成是 n 个长度为1的有序子序列
  2. 然后两两归并,得到 n/2 个长度为2的有序子序列
  3. 继续按照该策略归并,直到得到 1 个长度为n的有序子序列

上述过程即一次反向递归,也是归并排序的基本思想

可视化归并排序

归并排序

[……]

继续阅读

算法-深入堆排序

堆排序的理解和实现

原理

  1. 将一个无序序列建成一个堆,根据大顶堆或小顶堆的性质,堆顶元素为序列的最大(小)值
  2. 初始化建堆后,调整输出堆顶的最值元素,对剩余的序列
  3. 继续调整为大顶堆/小顶堆,调整输出堆顶的最值元素
  4. 如此循环,直到序列有序,具体过程得需要在代码中体会

可视化堆排序

堆排序

了解

大(小)顶[……]

继续阅读

算法-有趣的鸡尾酒排序算法

冒泡和鸡尾酒排序(双向冒泡)

鸡尾酒排序为什么叫鸡尾酒排序,我特地百度了下,由于排序过程类似搅拌,也叫鸡尾酒搅拌排序,具体现象可以根据下图观察得出

鸡尾酒排序算法可视化

原理:对待排序列进行双向的循环,采用冒泡排序的方式,在正向循环时把最大元素移动到序列末端,在逆向循环时把最小元素移动到前面

鸡尾酒排序

为了不影响C++代码的阅读,将注释写到了Python代码里

[……]

继续阅读