算法与编程
文章平均质量分 58
Jack_thu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
插入排序算法实现与分析
插入排序思路描述维护一个已排序数组 1.将每次要处理的元素插入到已排好序的数组 2.插入位置之后的已排好序的元素后移 3.从头至尾遍历待排序元素数组关键点1.插入位置的判定:从后往前比较 2.比较的同时可以对已排序元素向后移位,注意保存被覆盖掉的待排序元素 3.边界条件,例如插入排序处理的是vector中的全部元素,而size()函数比元素个数大13 代码实现#include <iostr原创 2015-02-25 20:02:54 · 393 阅读 · 0 评论 -
数值与字符(串)类型转换
数值与字符(串)类型转换char intstring intdouble stringstring charchar* string原创 2015-07-26 19:42:03 · 673 阅读 · 0 评论 -
最大公约数Greatest Common Divisor
Greatest Common Divisor 在数论和程序实现中都经常用到,很重要,也有很多方法原创 2015-07-12 11:22:25 · 644 阅读 · 0 评论 -
动态规划学习与实例(2) 最长公共子序列
最长公共子序列LCS( longest common subsequence )问题描述一个给定序列的子序列是该给定序列中去掉0个或者多个元素,此处的子序列不要求必须连续.给定序列 XX 和 YY , 如果 ZZ 既是 XX 的一个子序列,又是 YY 的一个子序列, 则 ZZ 是 XX 和 YY 的公共子序列.找出给定序列 XX 和 YY 的最长公共子序列 LCSLCS.问题分析穷举方法:原创 2015-02-27 14:11:30 · 567 阅读 · 1 评论 -
递归写法总结
递归写法总结递归是算法中的一种很重要思想。好的递归程序逻辑清楚,代码简洁,有时候时间上也非常高效;此外链表、二叉树等结构用递归算法一般都有鲜明优势。 往往递归问题口头说起来感觉十分清晰顺畅;而用代码实现起来确总感觉层峦叠嶂,不知从何下手,思路也越来越混乱不堪。原创 2015-05-18 13:07:44 · 3503 阅读 · 0 评论 -
快速排序算法
快速排序算法思路描述快速排序也是分治算法中的一种.分解问题:待排序列通过不断进行元素交换,被划分为两个子序列:左边的子序列小于主元,右边的子序列大于主元. 解决:然后递归调用快速排序,继续将子序列进一步划分直到子序列成单个元素.合并:就地排序,合成不需要额外的操作.关键点将序列划分为两个区间时候,需要两个标记,分别指向要与主元进行判别的元素和该元素要交换到的位置. 两个标记要根据判别结果原创 2015-03-09 21:08:03 · 415 阅读 · 0 评论 -
堆排序算法
堆排序算法可以将堆作为一种数据结构,利用这个数据结构的特点实现排序堆的性质(最大堆)堆的结构与二叉树类似,可以用数组或者Vector实现其结构最大堆的根元素比左右儿子都大,且任意子堆都满足该性质左右儿子的查找同二叉树,假设以数组的第一个数arr[0]arr[0]作为根结点,arr[i]arr[i]的父结点和左右儿子的位置: parent(i)=(i−1)/2left(i)=2i+1right原创 2015-03-06 20:31:15 · 544 阅读 · 1 评论 -
归并排序算法
归并排序算法归并排序是一种典型的分治算法分解:总是对排序区间内的元素以中点二分,分别对左右区间进行排序解决:归并排序不断递归调用自己,分解到底层后,待排序区间缩减为2个元素的比较合并:在递归分解的每一层上,都得到左右两边已经排序的子序列,需要将有序子序列合并到一个序列. 实质上 “解决”环节是在“合并”中一起完成的,因为分解到每组2个元素还可以继续分解成左右各1个元素,然后再逐层向上合并.合原创 2015-03-05 16:41:14 · 418 阅读 · 0 评论 -
动态规划学习与实例(1)
动态规划学习与实例(1)动态规划求解思路:分解最优子结构找出各级最优子结构间递推关系自底向上求解最优子结构表追溯到最优解示例:Problem1. 给定一个数字序列,找出其中最长子序列,子序列满足顺序递增。求解最长子序列的长度和对应的子序列。 Problem2. 给定一个数字序列,找出其中和最大的子序列,并求解子序列的长度和对应的子序列。原创 2015-02-25 13:48:39 · 402 阅读 · 0 评论 -
广度优先搜索(BFS)
广度优先搜索(BFS)最短路径 层序遍历原理实现原创 2015-07-26 18:44:57 · 517 阅读 · 0 评论
分享