
java 算法
文章平均质量分 56
haizi8888
这个作者很懒,什么都没留下…
展开
-
java排序算法之插入排序
插入排序是一种简单的排序算法,适用于少量的输入,如果只需要对几个元素进行排序,那么还是不错的解决方式,其算法相对简单。但是如果要处理大量的数据的时候,插入排序时很糟糕的; 原理如下所示: 假设有数组:int[] a = {5,6,1,2,7,8}第一趟:5 6 1 2 7 8第二趟:5 6 1 2 7 8第三趟:1 5 6 2 7原创 2014-03-14 12:52:30 · 492 阅读 · 0 评论 -
java排序算法之希尔排序
1:实质上,希尔排序是对插入排序算法的一种改进,希尔算法虽然不是最快算法(运行时间是次二次方(比如: )),但是代码简单;(由于代码简单,对中等数据量的输入,希尔排序时首选的算法)2,基本思想:避免了大量数据的移动,通过先比较相距较的元素排序;依据:对于一个h(k)有序的数组,在h(k-1)排序之后,仍然保证h(k)有序;3:排序过程如下所示:对数组(81,94,11,96,12,35,1原创 2014-03-14 14:52:22 · 595 阅读 · 0 评论 -
java排序算法之堆排序
在博客http://blog.youkuaiyun.com/haizi8888/article/details/21414635中,已经分析了二叉堆进行了比较全面的分析; 所谓的堆排序,就是对N个数存储为最大(小)堆的形式,每次deleteMin取出一项,运行N次,就可以获得有序的序列;步骤如下:1, 将每一项存入数组中;(花费O(N)时间)2, 调原创 2014-03-18 21:32:10 · 490 阅读 · 0 评论 -
优先级队列(java.util.PriorityQueue<E>)
1, 用链表实现,插入数据以常数时间,但是访问最小(大)项要对链表进行线性扫描。若保持链表的有序性,访问访问最小(大)项以常数时间,但是插入确实线性时间。2, 用二叉堆实现,具有这些优点(1)通过简单的数组实现,(2)最坏的情况,以O(logN)时间inser和deleteMin,(3)常数平均时间insert,最坏情况下常数时间findMin; 二叉堆:是一颗完全二叉树,可以用数原创 2014-03-17 23:09:05 · 1301 阅读 · 0 评论 -
java排序算法之冒泡排序
冒泡排序是相对简单的排序算法;冒泡排序算法如下所示:1, 比较相邻的两个元素,如果第一个比第二个大,就交换它们;2, 对每一对相邻元素作同样的工作,从开始第一对到结尾最后一对。(一遍冒泡会将最大的值抓出来放在最后);3, 继续1,2步骤;(但是最后一个元素不需要);直到需要遍历的元素为1; 运行时间为:O(N^2)//代码原创 2014-03-18 22:00:16 · 532 阅读 · 0 评论 -
Java图算法之基础
基础:图结构接触的也是比较多的,基础部分网上到处都是,这里就长话短说,存储图的两种方式,一种是邻接表,一种是邻接矩阵;举例说明吧,如下图,我们该怎么构建邻接表和邻接矩阵;(抄袭网上的图)邻接表:邻接矩阵基于邻接表的图的构造如下所示:顶点类:(其实无论是顶点类,边类,还是图类,他们含有的成员变量,成员方法都是不固定,根据需要可以适当的添加,现在我以原创 2014-04-02 23:10:59 · 896 阅读 · 0 评论