自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BeforeEasy的博客

再坚持那么一点点

  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 动态规划--钢条切割问题

动态规划法(dynamic programming),这里的programming不是编程的意思,而是一种表格法 不同于前面的分治法,是把问题分成若干互不相交的小问题,递归的解决这些问题,然后合并解决大问题,当各个小问题是重叠的时,分治法会做很多重复的计算,会反复求解公共子问题,而动态规划会把公共子问题只求解一次,保存在表格(数组)里,从而避免了重复计算。 动态规划通常会求解最优化问题,最优解可

2016-07-31 21:11:29 2381

原创 分治法解决选择问题——找出第i小的元素

给出一组数据,返回第i小的元素,最常规的思路是遍历找,或者排好序之后返回等,这里介绍用分治法解决,用到之前快排里的一个函数partition,为了把数组分成两部分,A[p,q-1]的元素都小于主元q, A[q+1,r]的元素都大于q, 所以只要比较i这个位置要落在哪一边就好了 伪代码如下:int Select(int *A, int p, int r, int i)//对数组A[p,r]返回第i小

2016-07-30 16:21:11 4993

原创 Android开发环境的搭建遇到的问题和解决

Android开发环境搭建的特别心累,这里分享一下,希望能帮助到其他人QAQAndroid主要是由Java来写的,所以,首先得有java的开发环境。这里是用eclipse。 (当然,在安装eclipse之前应该已经下载了jdk并且配置好路径了,这个我根据网上的教程没什么大问题就完成了)常规来讲,在官网上下载安装就好了https://eclipse.org/downloads/一开始的时候我

2016-07-28 21:10:59 996

原创 线性时间排序之计数排序,基数排序和桶排序

前面几篇文章已经介绍了几种能在O(nlgn)时间内排序n个数的算法,归并排序和堆排序达到了最坏情况下的上界(渐进最优); 快排在平均情况下达到下界; 但是这些算法都有一点:在排序的最终结果中,各元素的次序依赖与它们之间的比较, 所以称为比较排序, 这一篇介绍三种线性时间复杂度的算法,排序不依赖与比较:计数排序,基数排序和桶排序计数排序 假设n个输入元素中每个都是在0-k这个区间的, k 是一个

2016-07-26 14:56:27 413

原创 快速排序

快排的特性: 快排的最坏情况时间复杂度为Θ(n2),虽然最坏情况时间复杂度很差,但是快速排序通常是实际应用排序中最好的选择,因为其平均性能非常好,期望时间复杂度是Θ(nlgn),而且隐含的常数非常小; 快速排序是原址排序,在虚存环境中也能很好的工作; 快速排序不稳定基本思想: 分治思想; 分解:数组A[p..r]被分解成两个(其一可能为空)子数组A[p..q-

2016-07-26 13:46:30 274

原创 堆排序

堆排序是一种不稳定的,时间复杂度为O(nlogn)的排序方式; 在了解堆排序之前,应该先来了解一下堆: 二叉堆通常以数组的形式表示,可以被看成一个近似的完全二叉树,最后一行未必填满;A.length 表示数组的长度, A.heap_size表示数组中有多少个堆元素,所以 A.heap_size<=A.length; 树的根节点是A[1]; 给定一个结点的下标 i,可以方便的知道其父节点和左右孩

2016-07-24 12:16:24 289

原创 自学Java第一篇

首先想说的是我虽然是个小白,但是多少有点c++ 和c的基础,所以自学java的时候就没有搞得那么详细,因为大量的东西跟c++是比较像的,这里是今天的学习笔记,重点是一些跟c++不一样的地方。  前面还有一篇从知乎上找到的很长很详细的专门论述c++ 与JAVA不同的文章,感兴趣的可以看下1、main函数的写法:java是完全面向对象的,由一个一个类组成,在每一个类里可以写主函数,跟c的mai

2016-07-23 18:27:08 315

原创 随机排列数组

很多算法通过给定的输入变换排列以使输入随机化。 一个方法是为数组的每一个值A[i]附加一个随机的优先级p[i]: 伪代码如下:n = A.length;new array P[n+1];for(int i = 0;i<n;i++){ p[i] = random(1,n3);}sort A by P[i]另一种方法可以在原址上进行随机化 伪代码如下:n = A.length;

2016-07-23 17:39:25 394

原创 渐进符号

因为很难打,所以还是上图片吧,字丑勿怪

2016-07-21 15:29:42 504

转载 java和c++的不同

以下内容来自知乎:c++语言与java语言的区别有哪些?答案是知乎用户 答的,也不知道答主同不同意我用在博客里,主要是为了自己以后看起来方便qaq作者:明三秋链接:https://www.zhihu.com/question/22928284/answer/23095995来源:知乎著作权归作者所有,转载请联系作者获得授权。一、C++有而Java没有的特性

2016-07-19 21:58:58 481

原创 递归求解

这是网易公开课麻省理工学院算法导论的笔记,主要讲了几种渐进符号, O, Θ,o, ω,Ω的意义。这里重点想分享的是递归算法的听课笔记。递归算法常见三种算法:代换法,递归树算法和主定理1、代换法(substitutionmethod):   主要分为三个步骤:1)   猜测形式。并不需要很确切,只要大致是上界就可以,系数之类只用常数c代替就可以2)   带入求证。把猜测的形式

2016-07-19 21:47:40 553

原创 分治法 归并排序 加上逆序数求法

分治法: 字面意义就是分而治之,把大的问题分成小的相似的子问题,递归的解决掉小问题,最终合起来解决大问题 分治法在每层递归时都有三个步骤: 分解原问题为若干子问题,这些子问题都是原问题的规模较小的实例; 解决这些子问题(递归) 合并这些子问题的解分治法的一个应用就是归并排序,是一种稳定的快速的排序,(Θ(n*logn)) 分解: 待排序的n为 n/2 n/2两组 解决: 归并排序递归的

2016-07-18 22:26:02 857

原创 插入排序及算法分析

**插入排序**是一种很重要的排序方式,包括直接插入排序,二分插入排序,希尔排序等,这里 以直接插入排序(不稳定)为例研究算法分析。**直接插入排序**最经典的引入就是扑克牌,所谓插入就是拿着当前牌(第j张),插入到前j-1张牌中,使这j张牌仍然有序,所以伪代码是这样的(n张牌, 储存在数组A[n+1]中)://扑克牌假定从1到n,第一张显然已经有序,当然插入的牌也有可能插到当前第一张牌之前,也就

2016-07-18 21:46:27 612

原创 暑假专项

虽然flag立了难免有被拔的一天,但是还是要勇敢的立。没错,我就是来立flag的,开这个博客是想暑假自学算法,做一些算法竞赛的题目,自学安卓应用开发,并且把学习笔记分享出来,希望自己每天都能收获一些知识,珍爱生命,远离咸鱼一样的暑假。今天,先看了大黑书算法导论的第一章算法在计算中的应用,一句话来讲就是算法很重要,你要好好学,不要嫌书厚……算法就是任何良定义的计算过程

2016-07-17 18:34:43 366

微信小程序 在线电子书商城+阅读

微信小程序在线电子书商城,由于后台书籍的存储用的是bmob,可能由于时间的原因失效了,需要添加新的bmob密钥。添加图书的封面、标题、作者、类别、内容等信息后才能显示。可以实现评论、添加购物车、阅读、记录阅读位置、修改字体大小等功能

2018-03-30

空空如也

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

TA关注的人

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