java基础算法
季科
这个作者很懒,什么都没留下…
展开
-
java排序之shell排序
之前的几篇关于排序的算法都是比较简单的排序,虽然不一定可以写出来,但是一眼就可以看懂,接下来的几篇的排序可能就需要仔细思考一下,或者画图描绘一下了,这篇文章讲的死shell排序,也叫增量排序,它的本质是插入排序,通过将数组数组的方式来将增加排序的速度,分组的方式第一次将数组的长度/2,第二次/4,当结果等于1的时候,那么将这个数组进行插入排序就完成了排序,当然分组时也是需要排序的,所以我认为这个和原创 2016-04-27 20:36:01 · 1859 阅读 · 0 评论 -
java简单排序之冒泡排序
几乎每一个刚开始学习编程的人都会学习冒泡排序,哎,学习了那么久,现在才写一篇冒泡排序,冒泡排序的大概思想就是有多少个数就执行多少次将最大的数或者最小的数放在最后或者最前,将最大或者最小的数放在最前或者最后的方式就是通过依次比较,好吧,直接贴代码了。package www.jk.bubble;/** * * @author jk * 这个代码主要是实现了冒泡排序,这个原创 2016-04-25 09:20:45 · 223 阅读 · 0 评论 -
java简单排序之选择排序
这篇文章谈的是选择排序,选择排序就是第一次找出最小的,第二次找出第二小的......,然后依次和第一个,第二个交换,到了最后面,也就是排序完成了,可能理论有点绕,看看代码就清楚了。package www.jk.selectsort;/** * * @author jk 这段代码写的是选择排序,其实我个人来看,也是蛮简单的,第一层循环,数的个数,第二层循环,找出当前的循环体内的最小或者最大原创 2016-04-25 09:39:32 · 313 阅读 · 0 评论 -
java基础算法学习之概率算法
概率算法是以前一直没有接触过的算法,第一眼看见的时候真的觉得很厉害,这个算法的思想很简单但是运用好很难,大概就是将问题转化为几何图形,然后通过点的分布来求解我们需要的信息,这里的例子是求解π,画的图确实有点丑,大概就是以正方形的变长为1,圆形的半径为1,那么我知道知道第一象限圆的面积为π/4,然后正方形的面积为1,那么我们可以通过落入圆形中的点数占的比例来估计π的值,顺便提一句,这个算原创 2016-04-25 09:14:25 · 6899 阅读 · 0 评论 -
java基础算法学习之分治
这篇文章我们来谈谈分治算法,分治算法也就是将大的问题分解成为小的问题,然后依次求解,如果在一堆硬币里有1个假的硬币,那么我们可以堆硬币为偶数那么分成两堆,然后再质量小的那堆里面求解,如果硬币的个数为奇数,那么我们以中间的为分割,如果两堆相等,那么中间的就是假的,否则就和偶数的求解思路是一样的,然后依次算下去,直到找到假币为止,好吧,贴代码:package www.jk.divideandcon原创 2016-04-23 12:22:17 · 388 阅读 · 0 评论 -
java基础算法之递推
这篇文章我们来谈谈递推:递推的经典例子是兔子数列斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,原创 2016-04-21 20:32:24 · 4977 阅读 · 0 评论 -
基础算法学习之穷举
穷举是最最基础的算法之一,也是学习编程的人必须学习的算法之一,今天我们就用穷举来解决古代的一个经典的问题,鸡兔同笼的问题,鸡兔同笼的问题是知道有多少个头,多少脚,求解有多少鸡,多少兔?代码:package www.jk.exhaustiondemo;import java.util.Scanner;public class Test { public static int chi原创 2016-04-21 20:03:20 · 512 阅读 · 0 评论 -
java学习之暴力求解新郎新娘的问题
这篇文章的代码来源于一个故事,就是说主婚人忘记了每个对夫妇的名字,然后每个丈夫说出一个自己的妻子,但是新郎说的结果是错误的。我们可以根据这个规则来暴力求解 * 主要的思路就是每个新郎找到每一个新娘,但是要排除不符合规则的,还有就是同一个新娘不可能被两个人。package com.jk.hw;/** * * @author jk * 这段代码说的是暴力求解新娘新转载 2016-05-03 19:49:53 · 1159 阅读 · 0 评论 -
java基础算法之通过辗转相除求 最大公约数
最大公约数的意思就是整数m和n有最大的公共约数,这篇文章写的是辗转除来求最大的公约数,其实想想也蛮简单的,首先是我们需要其实之前我们都可以不用思考,只需要思考最后一步,因为是公约数, 然后返回值肯定是n,这里m>n; 这里可能有的人会思考,为什么通过取余来得到m,n,其实仔细想想,我们通过取余去掉的都是r=m%n,n的倍数 ,如果n是m的公约数那么r=0是符合,否则就只能去n剩下的里面去找了。pa转载 2016-05-03 19:45:07 · 2040 阅读 · 0 评论 -
java基础算法学习之完全数的求解
这篇文章说说完全数的求解,这里我想说的是这个代码的思路,因为要实现这个功能的话,真的不难,完全数,就是所有的因子相加等于这个数,那么这样的数就被称为是完全数,这篇代码中的思想是在一个范围内,每次遍历一个数,然后保存两次这个数,一个用于是求因子,另一个求是否最后和为0,感觉如果是我第一次想的话,应该是想不到的。代码:package com.jk.perfectdemo;import ja转载 2016-04-30 14:48:01 · 3375 阅读 · 1 评论 -
java基础算法之随机数的产生
jk这篇代码写的是一段伪随机数的产生,通过两个变量和一个种子来得到一个和,然后在找一个base,得到的和除以base得到余数, 余数除以base就是我们求的随机数,大家看代码理一下就是了。代码:package com.jk.random;/** * * @author jk这篇代码写的是一段伪随机数的产生,通过两个变量和一个种子来得到一个和,然后在找一个base,得到的和除以ba转载 2016-04-30 13:44:21 · 299 阅读 · 0 评论 -
java之递推求解一维多项式
这篇文章说的是如何计算一个一维多项式的值,一维其实也就是包含一个变量的多项式,类似f(x)=ax^3+bx^2+cx+d 的形式,我们可以将上面的式子写成形如((ax+b)x+c)x+d这样很容易就看出了这个式子可以通过递推的方式来实现,代码:package com.jk.test;/** * * @author jk,这段代码写的是如何计算一个一维多项式的值,一维其转载 2016-04-30 13:24:17 · 1217 阅读 · 0 评论 -
java基础查找之二分查找
这篇文章谈谈二分查找,二分查找的思想很简单,就是在一个已经排好序的数组里面,每次去中间的数来进行比较,这里我讲我编程的思路,首先while循环里面要是小于等于,如果是小于的话,那么当low和high相等的时候,那个数就找不到,然后当a[mid]package com.jk.binsearch;import java.util.Arrays;/** * * @author jk,这原创 2016-04-30 12:03:25 · 514 阅读 · 0 评论 -
java排序之归并排序
归并排序的思想简单,但是实现起来有点难,思想就是通过将数组分开,然后将数组合并起来,但是,注解的问题我过一段时间补上,感觉对递归理解的还不够透彻。对了以下的代码来自百度百科代码:package com.jk.merge;import java.util.Arrays;/** * * @author jk 这段代码来自百度百科,这个是归并排序,归并算法的思想很简单,可能是我对递归理转载 2016-04-29 19:40:32 · 246 阅读 · 0 评论 -
java排序之堆排序
这篇文章的代码叙述的是堆排序的构成,堆排序我认为最重要的就是理解,代码,真的简单的,这里我仅谈谈我的思路,将一个数组想想成一棵树,然后首先构建一个大根堆,然后将这个大根堆的根借点和最后一个交互位置,然后后面不断的重复交换,构建大根堆的过程,然后就完成排序了啊,其实,这个和我之前几篇说的差不多,这个堆排序是基于选择排序的,每次选出最大的一个,然后交换,这个方法最主要的就是将这些数据分开来选择,然后结转载 2016-04-29 18:52:57 · 248 阅读 · 0 评论 -
java排序之快排
这篇文章来谈谈快排,最近有一种感觉,只要有规律可循的代码,分解成为两部分以后效率就会提高很多。代码思想如下 这个代码写的是快排,快排最主要的思维就是寻找一个分界值,大的放在一边,小的放在一边,然后递归分别处理大的和小的, 这里需要注意的是我们在移动游标是需要的是加上等于分界的值,否则的话如果有相等的值就会进入死循环, 很简单的来说,当以一个数为分界值转载 2016-04-29 09:39:31 · 11396 阅读 · 2 评论 -
java简单排序学习之插入排序
插入排序也是一个很重要的东西,我们通过现在我们想要插入的数和前面的比较,如果没有到最前面,或者当前的数一直大于或者一直小于(这取决于降序还是升序),那么我们就一直移动,如果找到了不符合条件的,那么就将我们需要的数插入到该下标的后一位。当然我们需要插入的数是需要提前保存的,当然,这里你可能还有点不清楚,当你看我的代码和每一步的注释应该就懂了。package www.jk.sort;/**原创 2016-04-25 09:28:54 · 294 阅读 · 0 评论