数据结构与算法
spring_he
爱好游戏爱好极客
展开
-
java 算法基础之三合并排序法
合并排序算法是用分治策略实现对N个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同 的两个子集合,分别 对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。重点:1.分治的实现 2.合并的实现 分治,就是把整个集合的元素一直除2化分,一直化为到没有两个元素开始合并。图:分治的时候比较简单,一直除2递归就行了,合并的时候为了方便就借助另原创 2013-08-26 11:34:27 · 763 阅读 · 0 评论 -
java 算法基础之五快速排序法
快速排序法与一般的冒泡排序法差不多,区别可能就是冒泡会不断的交换,而快速排序法先找到最小的那个值,然后把这个最小值放在数组的最前面,游标往下走,举个例子:原数组:4,5,1,7,6第一趟:1,5,4,7,6第二趟:1,4,5,7,6第三趟:1,4,5,6,7这个原理比较简单。代码由下:class Select{ public void select原创 2013-08-26 11:34:31 · 552 阅读 · 0 评论 -
java 算法基础之二快速排序算法
所谓的快速排序的思想就是,首先把数组的第一个数拿出来做为一个key,在前后分别设置一个i,j做为标识,然后拿这个key对这个数组从后面往前遍历,及j--,直到找到第一个小于这个key的那个数,然后交换这两个值,交换完成后,我们拿着这个key要从i往后遍历了,及i++;一直循环到i=j结束,当这里结束后,我们会发现大于这个key的值都会跑到这个key的后面,不是的话就可能你写错了,小于这个key的就原创 2013-08-26 11:34:24 · 718 阅读 · 0 评论 -
java 算法基础之一寻找最大公约数
最近发现在搞Android的都要懂一点数据结构和算法才能进阶到高手,所以就回去复习了一下基础,为一些公司招聘做题做准备。今天研究了一下最大公约数的求法,在网上也找了不同的解法,现在就想总结一下,拿出来分享给大家,共同 学习首先讲一个什么是公约数,这个问题我们小学都学过,可能有一部分人已经忘记了,所以还是讲一下,假设有两个数a,b,所谓的公约数就是能把a,b整除的最大整数。明白了要求我们就来解决问题原创 2013-08-26 11:34:22 · 597 阅读 · 0 评论 -
java 算法基础之六插入排序与冒泡排序
1、插入排序插入是比较简单的一种排序方法,基本思想就是把数据分组两段,一部分是有序,另一部分是待排序的。把有序的数据不断的加大到全数组完成排序。代码完成如下:class insert { public void insert_sort(int[] arrays){ for(int i=0;i){ for(int j=i;j>原创 2013-08-26 11:34:38 · 606 阅读 · 0 评论 -
java 算法基础之四堆排序法
堆排序是一种利用完全二叉树来解决问题的高效算法,合法的最大堆树要满足一个条件就是每一个结点值都要大于或等于它的孩子结点值。在一个数组中那专业法表示为:arrays[i]>=arrays[2*i+1] && arrays[i]>=arrays[2*i+2]; 最小堆类似,只要改为冒最小值即可。堆排序树的构造过程找最大值过程由下图,数组arrays[0....n]为:17,8,45,84,2,原创 2013-08-26 11:34:29 · 485 阅读 · 0 评论 -
java 算法基础之七希尔排序
希尔排序是插入排序的一种类型,也可以用一个形象的叫法缩小增量法。基本思想就是把一个数组分为好几个数组,有点像分治法,不过这里的划分是用一个常量d来控制。这个0位置移动到第一个,这样就会浪费很大,使用这个改进的希尔排序可以实现数据元素的大跨度的移动。也就是这个算法的优越之处。 希尔排序过程图解:数组:45,20,80,40,26,58,66,70d=5时 分组为:45,5原创 2013-08-26 11:34:40 · 633 阅读 · 0 评论