三路快速排序算法
摘要:1、三路快速排序算法的基本思想 之前的快速排序算法都是将序列分成<=v和>v或者是<v和>=v的两个部分,而三路快速排序是 将序列分成三个部分:<v、=v、>v,如下图所示: 首先v元素还是作为"基准"元素,e表示当前遍历索引值指向的元素,也就是待考虑的元素,从图中可以 看出来,整个序列被分成3个部
阅读全文
双路快速排序法
摘要:1、算法出现的背景 之前讲的,当我们排序的是一个近乎有序的序列时,快速排序会退化到一个O(n^2)级别的排序算法, 而对此的改进就是引入了随机化快速排序算法;但是当我们排序的是一个数值重复率非常高的序列时, 此时随机化快速排序算法就不再起作用了,而将会再次退化为一个O(n^2)级别的排序算法,那为什
阅读全文
快速排序算法
摘要:1、什么是快速排序算法? 快速排序是由东尼·霍尔所发展的一种排序算法,犹如他的名字一样,速度快,效率高,也是实际 中最常用的一种算法,被称为20实际对世界影响最大的算法之一。 基本思想: 1): 从序列中挑出一个元素作为"基准"元素,一般是该序列的第一个元素或者是最后一个元素。 2): 把序列分成2
阅读全文
自底向上的归并排序算法
摘要:1、什么是自底向上的归并排序? 说到底,不管是前面说的自顶向下的归并排序还是现在讲的自底向上的归并排序,其实质都是归并。 来看看一个演示过程: 这个就是待排序的数组序列 先将数组序列以2个元素为一组分成4组,每个组内部分成2个子序列进行向上合并 这是合并之后的效果 然后以4个元素为一组分成2组,每个
阅读全文
归并排序算法
摘要:1、什么是归并排序? 归并排序是利用递归和分而治之的技术将数据序列划分成为越来越小的序列,将两个(或两个以上)有序子序列合并成一个新的有序序列,即把待排序序列分为若干个子序列,每个子序列是有序的,然后再把有序子序列合并为一个新的有序序列,最终将整个序列变得有序。 时间复杂度: O(nlogn) 2、
阅读全文
插入排序之直接插入排序算法
摘要:1、什么是插入排序 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 从第二个元素开始r[1],那么将他左边的元素作为一个已经有序的序列,将r[1]按从小到大的顺序插入到 有序序列中的合适位置使之成为一个新的有序序列;接着将r[2]插入到左边的有序序列
阅读全文
选择排序之简单选择排序算法
摘要:1、什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中 选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是 不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]
阅读全文