排序算法的性能是算法的数据组织的能力决定的。排序算法的操作包括比较与交换或者移动,减少重复操作,选择中间数据结构保存排序过程是关键。快速排序的中间数据结构是二叉排序树,二叉排序树的分支每一次增加2倍。堆排序的中间数据结构是完全二叉树,每个元素只在一个队列中。归并排序使用树形结构,然而与快速排序的方法不同,与希尔排序类似。归并排序与希尔排序都是数据分组的方法,归并排序是树形序,希尔排序是数组序。
例题是清华大学版的《数据结构》,第十章 内部排序,10.3 快速排序
Quicksort算法思想
1. 在Qsort函数的输入数组中,选择一个元素称为枢轴(the pivot element)或支点,比较枢轴元素与数组中的其他元素,在数组high端和low端两个方向比较,在high端若元素值比枢轴元素大(greater than or equal to),则high--,枢轴与下一个元素比较,因此形成一个大于枢轴的连续元素序列,直到发现high端一个元素的值小于枢轴元素,应交换到low端。然后在low端比较元素值与枢轴元素的大小,发现一个小于枢轴的连续元素序列(less than or equal to),并且与high端比较一样,发现一个元素的值大于枢轴元素,交换到high端,因此比较能继续下去。最后,数组元素划分成三部分,枢轴元素是二叉排序树的根结点,左边是所有比枢轴元素小的元素,组成二叉排序树的左子树,右边是所有比枢轴元素大的元素,组成右子树。这个一趟排序过程被称为partition函数。
2. 左子树和右子树分别递归调用Qsort函数。
3. 在二叉排序树中&
上一篇:基于Springboot框架实现点餐平台网站系统【源码+论文】展示
下一篇:论文解读:A TRANSFORMER-BASED SIAMESE NETWORK FOR CHANGE DETECTION