算法
有雄心的小菜鸟
这个作者很懒,什么都没留下…
展开
-
堆排序
花了大半天时间研究了下堆排序。总体来说堆排序是选择排序和分治思想的结合。每次选择堆顶元素,堆顶元素要么是最大,要么是最小的。分治是指堆进行调整时,每次调整都只会影响一个子树,都使得数据量减少一半。 堆排序的过程: 1.建立堆化数组:从最后一个非叶子节点开始调整,从后往前调整,每次调整后该子树为符合要求的堆,直到i=0的根节点调整完。调整的具体步骤下面介绍。 2.把堆顶和堆最后一个位置互换,堆原创 2015-11-23 11:36:22 · 419 阅读 · 0 评论 -
求最大公约数
其实网上很多这个问题解法了,辗转相除或者相减。 我这里就写个简单证明吧,为什么能辗转相除。有什么不对的请指出。 证明: 假设y>=x,求x,y的公约数(其实x,y谁大都没关系,在辗转一次后(取余后),大的数会在前面的) y=ax+b; y,x 有最大公约数 ,假设这个公约数是c,等式两边同时除以c 则y/c = ax/c +b/c ;左右两边都是整数, 则b/c也必须是整数(0,1.原创 2015-11-24 10:49:20 · 304 阅读 · 0 评论 -
<编程之美>2.4 1的数目的解释
题目:给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。 以下是我自己一点理解,希望能帮到大家。其实最重的是这种思路,把一个复杂的大问题,经分析,划分成小问题,依次解决。不过真的很难做到,慢慢努力吧。 书中第二解法的解释 按书中说法: 假设abcd是个4位数,求其中1—abcd中出现1的个数。把问题划分成求个位、十位、百位、千位出现1的次数,最后求和。 书原创 2015-11-20 21:42:22 · 303 阅读 · 0 评论 -
选择排序和冒泡排序区别以及冒泡排序优化
选择排序和冒泡排序区别 我一直搞不太清这两个具体区别。打算研究下。原创 2015-12-07 22:58:35 · 664 阅读 · 0 评论 -
java 二叉树 建立完全二叉树和广度优先遍历
今天想写个如何建立完全二叉树的方法。顺便把二叉树的广度优先遍历也写了下。其实这两者思路都相似,都是用队列实现的,先进先出。若有任何问题,敬请指出来! 一.建立完全二叉树思路: 先从根节点开始,判断左右子树是否为空。若为空,将新节点插入子树;若不为空,就把根节点的左右子树入队列,开始下一次循环。从队列中先取出根节点的左子树,判断是否为空,若为空,插入。若不为空,则将其左右子树入队列。依队列顺序再原创 2015-12-05 14:16:17 · 2220 阅读 · 0 评论 -
java 归并排序
其实归并排序的中真正排序过程在Merge方法中。原创 2015-12-05 15:55:59 · 351 阅读 · 0 评论 -
二叉树遍历遐想
二叉树遍历:前序,中序,后序。原创 2016-02-28 15:14:12 · 295 阅读 · 0 评论