算法
文章平均质量分 76
Icehand哥
性感,幽默。
展开
-
二分查找
二分查找也叫折半查找,二分查找的查找效率是十分高效的,但是有一点:二分查找的目标序列必须是提前排好序的。若是一个无序序列,则先进行排序再查找。#includetemplateint binarySearch(T *tmp,int left,int right,T target){ int i = left,j=right; int mid; while(i<=j){ mid = (i原创 2013-12-30 21:52:20 · 1045 阅读 · 0 评论 -
快速排序----模板实现
程序已在vector和list上测试。虽然不要重复发明轮子,但是原创 2014-04-24 19:13:36 · 548 阅读 · 0 评论 -
动态规划
如果一个问题由交叠的子问题所构成,可以采用动态规划的方法进行求解。交叠的子问题可以理解为要想求解当前问题必须知道前一问题的解,也就是问题之间不是相互独立的。动态规划一般分为以下几步进行:1.找出最优解性质,刻画其结构特征;2.递归定义最优解,写出动态规划方程;3.以自底向上的方式计算出最优解;4.根据计算得到的信息,构造最优解。下面有一个LCS(最长公共子序列)的例子。原创 2014-01-03 16:18:50 · 658 阅读 · 0 评论 -
快速排序
快速排序的思想在于将每个数归位于自己应该在的位置。递归版本:#includevoid swapp(int &tmp1,int &tmp2);int partition(int *tmp,int left,int right) ;void quicksort(int *tmp,int left,int right){ if(left<right){ int pos = parti原创 2014-01-02 10:09:49 · 535 阅读 · 0 评论 -
随机数
我们先来看看下面几句代码:原创 2014-04-24 22:10:28 · 580 阅读 · 1 评论 -
归并排序
废话不说,直接上代码。 递归版本:#includetemplatevoid swap(T *tmp1,T *tmp2);templatevoid merge(T *tmp,int left,int right){ int i=left,mid=(left+right)/2,k=0; int j = mid+1; T *s; s = (T *)malloc((right-原创 2014-01-03 09:47:57 · 483 阅读 · 0 评论 -
插入排序
以前在新浪微博上写了几篇文章,发现编程的东西还是这里写比较好,毕竟专业人士扎堆的地方。插入排序属于减治法的一种。废话不说,先上代码。健壮性有点问题,但是插入排序的思想是没有问题的。#includestruct list{ int data; list *next;};void addNode(list *tmp,int t){ list *p; p = (list *)mal原创 2013-12-30 21:49:03 · 580 阅读 · 1 评论