算法
MESSI19901025
这个作者很懒,什么都没留下…
展开
-
2012年4月25日---红黑树的现实和操作
出去流浪了一段时间,现在我又回来了,内容继续更新,算法继续学习。在最近看的是红黑树,而且在这里停留了很久,因为总是遇到NullPointerException的问题,每天都在对程序进行调试,今天终于搞定了。这里先插入出现NullPointerException的情形:1字符串变量未初始化; 2接口类型的对象没有用具体的类初始化3当一个对象的值为空时,你没有判断为空的情况。这里简...2012-04-25 11:08:24 · 118 阅读 · 0 评论 -
2012/4/4----随机选择法
写算法之前先吐槽一下,今天实在是不适合骑车。昨晚花了一个小时洗车,准备干粮,各种骑行装备全都检查一遍就为今天的骑行。早上6点起床,7点准时集合出发,但是出发后就开始下雨。结果我们冒雨骑了近40km,不仅全身湿透(没有挡泥板的车,雨天真的不想再骑了),还满背是泥。并且由于雨越下越大,路又滑导致骑行速度提不上去,全程140km已经不能顺利完成了,只有半途返回。但是悲剧的事情又发生了,在返回的途中一...2012-04-04 21:20:09 · 125 阅读 · 0 评论 -
2012/4/3----桶排序
清明假期第一天休息,今天继续来一个算法。今天写的是桶排序的算法实现:这个算法的思想很简单,就是把待排序的数据根据一定的映射条件分布到若干的“桶”中,然后对每个“桶”中的数据进行排序,最后再把各个桶进行合并就可以得到我们排序顺序了。下面就是具体实现过程,里面有详细的注释:/* * 桶排序的java实现 * @version 1.0 2012/4/3 * @author ak...2012-04-03 12:18:48 · 98 阅读 · 0 评论 -
2012/4/1----基数排序
基数排序的核心思想是:把待排序的数组N中的数据分解成为个位,十位,百位.....然后再从个位开始排序,得到第一个数组N1,然后再把N1数组的十位进行排序得到N3,再对N3数组的百位进行排序得到N4,依次这样排序,直到数组中的所有数据的位数都用来排过序了,就可以得到我们所需要的排序数组了。以下就是过程代码:/* * 基数排序的java实现 * @version 1.0 2012...2012-04-01 18:03:59 · 94 阅读 · 0 评论 -
2012/3/31----计数排序
计数排序的核心思想是:对需要排序的数组A,计算出A中各个元素在排序后的数组B中的位置,然后在把A中的数值存放到B中相应的位置。这里最重要的步骤就是对A中每一个元素进行计算,算出这个元素所在的位置。下面就是详细代码:/* * 计数排序算法的java实现 * @version 1.0 2012/3/31 * @author akon */package com.a...2012-03-31 10:23:50 · 87 阅读 · 0 评论 -
2012/3/30----冒泡排序
冒泡排序的核心思想:把数组中的相邻两个数进行比较,然后把较大的数向后移,一直到最后的一个数是整个数组中最大的数。再把前面的过程循环,就可以完成排序。package com.akon405.www;public class BubbleSort { public BubbleSort(int[] A){ int i,j; for(i=0;i<A.length;...2012-03-30 12:42:44 · 91 阅读 · 0 评论 -
2012/3/29----快速排序
前面用到了分治算法所演变出来的一种排序---归并排序。这里,我们介绍另一种分治算法演变出来的排序算法---快速排序。快速排序通过选取数组中的关键字,把一个A[n]数组划分为3部分:A[key]=关键字,A[0...key-1]={比关键字小的元素},A[key+1...n-1]={比关键字大的元素}。然后递归调用这个过程便可实现对数组的排序。 /* *分治算法引申出来的又一种排序算...2012-03-29 11:48:13 · 102 阅读 · 0 评论 -
2012/3/28----堆排序
堆排序是一种基于二叉树的排序,利用二叉树的性质进行排序的算法。但是这里的二叉树并不是真实存在的,是我们利用数组的编号进行设计的特殊的二叉树。而堆排序其本质是一个就地排序算法。/* * 堆排序算法 * @version 1.0 2012/3/28 * @author akon */package com.akon405.www;public class He...2012-03-28 16:45:14 · 76 阅读 · 0 评论 -
2012/3/27----归并排序
通过使用分治算法的思想来对数组进行排序(这里叫做归并排序),分治算法的核心思想就是把一个问题分解n个小问题,然后把这n个小问题分别解决,最后再把这n个小问题的结果合并便可以得到结果了。(分解--解决--合并)/* * 分治算法对数组的排序的java实现(归并排序) * version 1.0 2012/3/27 * @author akon */package com.akon...2012-03-27 11:35:02 · 75 阅读 · 0 评论 -
2012/3/26----插入排序
从今天开始系统的学习算法,争取每天用java实现一个算法,然后在发表在iteye。既可以记录自己的学习轨迹,也便于有兴趣的朋友一起来讨论学习。ps:本人还是java新手,欢迎各种讨论学习。今天先来一个简单的排序算法:插入排序[code="java"]/* * 插入排序算法的java实现 * version 1.0 2012/3/26 * @author akon */...2012-03-26 21:32:49 · 91 阅读 · 0 评论 -
2012/5/12---求100以内的质数
这是很久以前写的代码。代码很简洁,也很简单。但是今天再做一个关于求质数的笔试题的时候,自己又习惯性的写了一个更加耗时的代码,所以在这里把以前写过的代码重新发表一次,加深一下印象。/* * 求100以内的质数 * @version 1.0 2012/5/12 * @auther akon */package com.akon405.www;public cl...2012-05-12 17:31:52 · 134 阅读 · 0 评论 -
2012年5月7日---基于斐波那契数列的时间复杂度分析
在算法中,时间复杂度是衡量一个算法好坏的重要标准。递归调用在算法中可以非常直观有效的解决我们的问题,但是由于其调用的时候需要花大量的时间,所以我们一般都会刻意的避免使用递归去完成我们的算法。在这里,我就用斐波那契数列的递归构造和非递归构造来分析递归和非递归的时间复杂度。先看具体的代码极其运行的时间: /* * 比较递归和非递归求斐波那契数的时间效率 * @version...2012-05-07 19:53:19 · 286 阅读 · 0 评论 -
2012/4/9----二叉查找树(二叉排序树)的各种操作
不知不觉都快5天没更新内容了,倒不是自己坚持不下来。一方面是因为二叉树这一块难度也比开始增大了,所以学习进度也就相对来说慢了一点。但更重要的是在学算法的同时也还有其他东西需要学习,在算法上面不能花太多时间。今天写的是和二叉查找树相关的java代码,包括了二叉查找树的创建,中序遍历,查询(分为递归和非递归两种),查找最小节点,查找最大节点,插入节点,删除节点,查找节点的前驱,查找节点的后继,查找...2012-04-09 22:43:56 · 117 阅读 · 0 评论