自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 排序问题进击之二:快速排序

快速排序是目前最常见的一种排序方式之一,其复杂度在O(nlgn)到O(n^2)之间,但一般来说,其平均情况表现很棒。源码如下:#include#includeusing namespace std;void quick_sort(int a[], int p, int r);int partition(int a[], int p, int r);void pr

2016-10-12 22:09:21 258

原创 排序问题进击之一:堆排序

本系列将介绍两种排序方法,首先介绍一下堆排序。堆是一种简单的数据结构,类似于完全二叉树,又可按其形式分为最大堆和最小堆(其实说白了就是一个数组,只不过把他的形状模拟为一棵树),堆排序是一种效率很高的排序算法,适用于小数据排序,具体讲解参考算法导论,下面把源码贴上,此代码调用了STL中的algorithm,它的作用是算法库,里面有替换的作用。源码:#include #include

2016-10-11 20:11:37 244

原创 浅谈分治问题之二:最大子数组问题

本节将继续讨论分治问题,并分析在最大子数组的问题中分治策略的时间复杂度,并引出一种新的解决问题的方法。最大子数组问题在生活中十分常见,例如股票问题,假设你获得投资一只股票的机会,为了实现收益最大化,你会在股票最低价格时买入,最高价格时抛出,我们可以设计一种算法来实现这个问题。(一)暴力求解法我们可以很容易设计出一种算法求解此问题,算出所有的子数组并进行比较即可,详见代码。int maxSub

2016-10-02 21:17:08 294

原创 浅谈分治策略之一:归并排序

分治策略是对大型问题的一种有效的方法,将一些大规模问题转换为一些小规模问题,分而治之,之前我们讲过了插入排序,插入排序是一种增量方法,当程序规模扩大时效率将下降,这时候我们可以采取分治的方法,本系列讲以归并排序为引子,来详细为大家讲解一下分治法。(一)递归算法结构解决分治问题分治法的思想是将几个规模大的问题转化为一些小规模的子问题,合理利用递归可以求解这些子问题。最后合并这些子问题。(

2016-10-01 12:42:59 941

原创 C++实现插入排序

插入排序,适用于少量数据。工作方式类似于扑克牌,每次抓一张牌,从右向左依次比较,小的数向前移位。代码实现,首先要创建一个数组,最大长度为length,然后进行插入。核心代码:for (int j = 1; j {int key = A[j];int i = j - 1;while (i > 0 && A[i] > key){A[i + 1] = A[i];

2016-09-28 11:54:13 164

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除