![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法实现
文章平均质量分 81
gwmwhu2
这个作者很懒,什么都没留下…
展开
-
快速排序算法
快速排序算法是20世纪十大最伟大的算法之一。它是由C.R.A.Hoare于1962年提出的一种划分交换排序算法,其采用的是分治的思想,分治是将原问题分解成若干与原问题相似的子问题,通过递归的解决这些子问题来最终得出原问题的解。 快速排序是通过一个划分(SPLIT)算法来将待排序序列划分成两部分,其中左边的元素都小于中间的元素,右边的元素都小于中间的元素。然后通过对子数组...原创 2012-03-07 19:05:38 · 237 阅读 · 0 评论 -
并查集
并查集是一种树形的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。判断亲戚关系是并查集的一个应用:若某个家族过于庞大,要判断两个人是否是亲戚,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系;规定x和y是亲戚,y和z是亲戚,那么x和z也是亲戚;如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。 并查集可以表示成如下图所示的数...原创 2012-03-08 22:33:12 · 66 阅读 · 0 评论 -
寻找多数元素
今天实现的算法是寻找多数元素,多数元素是指在一个含有n个元素的序列中出现次数多于[n/2](向下取整)的元素。 蛮力寻找多数元素是对每个元素进行计数,如果某个元素的计数超过[n/2],则断言它是多数元素,否则不存在多数元素。这种方法的时间复杂度过高,可以寻找更高性能的算法解决这类问题。 如果一个序列存在多数元素,那么该多数元素一定是该序列排序后的中间元素,也就是第[n/2](向上取整)个...2012-03-09 16:17:52 · 419 阅读 · 0 评论 -
最长公共子序列
今天实现的算法是求解最长公共子序列,在字母表Σ上,分别给出两个长度为n和m的字符串A和B,确定在A和B中最长公共子序列的长度并输出该最长公共子序列。这里,A=a1a2...an的子序列是一个形式为ai1ai2...aik的字符串,其中每个ij都在1和n之间,并且1<=i1<i2<...<ik>=n,子序列不是子串,并不要求连续。例如zxyxyz和xyyzx的最长公共...原创 2012-03-11 00:48:59 · 269 阅读 · 0 评论 -
寻找第k小元素
n个已排序的序列A[1...n]的中项是这个序列的第[n/2](向上取整)小的元素。最直接的方法是对这个序列进行排序并取出该元素,这个方法需要O(n log n)的时间。 选择算法是找出序列中的第k小的元素,该算法会设置一个阈值,当元素个数小于该值时直接排序找出第k小元素。若不小于阈值,则将n个元素分为[n/5]组,每组5个元素,如果n不是5的倍数,则排除剩余的元素。每组进行排序并取出它们的...原创 2012-03-13 01:18:55 · 329 阅读 · 0 评论