
数据结构和算法
文章平均质量分 78
从心开始yjh
鸿鹄志。
展开
-
数据结构与算法-C语言描述-三数取中快速排序(递归+非递归)+快速选择
最近读了《数据结构与算法-C语言描述》,受益匪浅,里面的排序算法讲的浅显易懂,而且给出的快速排序算法代码也非常简洁,下面给出中快排的递归和非递归方式(参考了别人代码实现的),同时将快排的变种快速选择算法的代码也附上,方便记忆。代码我已经调试通过可以直接使用或者用来记忆用来面试。#include<iostream>#include<stack>using names...原创 2019-12-05 20:09:22 · 1221 阅读 · 0 评论 -
《经典排序算法-插入排序》
内部排序:整个排序工作可在主存中完成。外部排序:不能再主存中完成而必须在磁盘上完成的排序。排序算法的下界:通过计算排列中平均逆序数而得出插入排序平均运行时间的精确的界。定理1—N个互异的的数组的平均逆序数是N(N-1)/4。定理2—通过交换相邻元素进行排序的任何算法平均需要Ω(N^2)时间。插入排序算法:插入排序有N-1趟排序组成,对于P=1趟到P=N-1趟,插入排序保证从位置0到位...原创 2019-04-15 22:21:50 · 293 阅读 · 0 评论 -
《经典排序算法-希尔排序》
希尔排序希尔排序也叫缩小增量排序,希尔排序使用一个序列h1,h2,…ht,叫增量序列,使用增量hk的一趟排序之后,对于每一个i我们都有A[i]<=A[i+K];所有相隔hk的元素都被排序,称文件为hk排序的。希尔排序重要性质是hk排序的文件保持它的hk排序性。hk排序对于hk,hk+1,…N-1中的每一个位置i,把其上的元素放到i,i-hk,i-2*hk…中间的正确位置上,一趟hk排序...原创 2019-04-15 22:24:14 · 261 阅读 · 0 评论 -
《经典排序算法-堆排序》
堆排序堆排序可以达到O(NlogN)的最佳运行时间,实践中却慢于Sedgewick序列的希尔排序。建立N个元素的二叉堆的的花费时间是O(N),然后执行N次DeleteMin操作,按顺序最小的元素先离开堆,将这些元素记录到第二个数组再将数组拷贝回来,得到N个元素的排序,每次DeleteMin花费时间O(logN),因此总的运行时间O(NlogN).该算法主要问题在于使用了一个附加数组,存储需求...原创 2019-04-15 22:26:01 · 780 阅读 · 0 评论 -
《经典排序算法-归并排序》
归并排序的最坏情形运行时间为O(NlogN),算法的基本操作是合并另个已排序的表,因为这两个表是已排序的,所以将输出放到三个表时通过对输入数据一趟排序来完成。基本的合并算法是取两个输入数组A和B,一个输出数组C,以及三个计数器Aptr, Bptr, Cptr,他们初始置于对应数组的开始断,A[Aptr]和B[Bptr]中较小者被拷贝到C中的下一个位置,相关的计数器向前推进一步,挡脸个输入表有一个用...原创 2019-04-17 22:04:03 · 265 阅读 · 0 评论 -
《经典排序算法-快速排序》
快速排序是实践中已知的最快的排序算法,平均运行时间O(NlogN),该算法之所以快是因为非常精炼和高度优化的内部循环。它也是一种分治的递归算法,将数组S排序的基本算法由下列简单的四步组成:如果S中元素个数是0或1,则返回。取S中任一元素v,称之为枢纽元。将S-{v}分成两个不相交的集合S1={x∈S-{v}|x<=v}和S2={x∈S-{v}|x>=v}返回quicksort...原创 2019-04-17 22:07:27 · 442 阅读 · 0 评论