
----------------------------算法
丑八怪28
我的三心二意:信心、恒心、决心;创意、乐意
展开
-
经典算法--斐波那契数列
斐波那契数列的特点:前两个数为1,从第三个数开始,每个数都是其前面两数之和算法实现:public class Fbo { public static void main(String[] args){ Scanner s=new Scanner(System.in); System.out.println("请输入你想查看的斐波那契数列:");原创 2017-03-28 14:58:54 · 594 阅读 · 0 评论 -
水仙花
水仙花数是一个三位数,其各位的立方之和等于数值本身public class Flower { public static void main(String[] args){ int a,b,c; System.out.println("水仙花数:"); for (int i=100;i1000;i++){ a=原创 2017-03-28 15:29:30 · 317 阅读 · 0 评论 -
汉诺塔算法
汉诺塔算法:古代有一个梵塔,塔内有ABC三个座,开始时,A座上有16个盘子,盘子的大小不一,大的在下,小的在上。有一个老和尚想把A座上的盘子移动到C座上,每次只允许移动一个盘子,且移动过程中始终是大的在下,小的在上,如何实现?核心思想:1.递归2.只要盘子数不是1,那么总是先把A上的盘子借助C移动到B上,然后再借助A将B上的移动到C上public class Hanoi {原创 2017-03-28 15:49:56 · 564 阅读 · 0 评论 -
加密---异或运算
public class Example { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.println("请输入要加密或解密的字符串:"); String strs=scanner.nextLine();原创 2017-03-27 10:26:05 · 560 阅读 · 0 评论 -
变量互换(不借助中间变量)
我们通常遇见两个变量互换,会采用一个中间变量,由于存在临时变量,会消耗系统资源,所以,能不能不使用中间变量直接交换呢?答案是:可以!如果我们遇见了两个整形数据需要互换的时候,不采用中间变量可以直接进行交换,那么方法就是异或运算!public class VariableExchange { public static void main(String[] args){原创 2017-03-27 10:39:00 · 636 阅读 · 0 评论 -
判断是否为闰年
闰年判断条件:1.能被4整除但不能被100整除2.能被400整除实例:public class LeapYear { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.println("Please inpu原创 2017-03-27 10:45:31 · 473 阅读 · 0 评论 -
杨辉三角
概述前提:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大。第n行的数字有n项。第n行数字和为2n-1。第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。每个数原创 2017-03-27 10:53:39 · 499 阅读 · 0 评论 -
九九乘法表
public class MultiplicationTable { public static void main(String[] args){ for(int i=1;i9;i++){ for (int j=1;j;j++){ System.out.print(j+"*"+i+"="+(i*j)+"\t");原创 2017-03-27 11:43:48 · 275 阅读 · 0 评论 -
1+1/2!+1/3!+1/4!+...+1/20!
由于要求计算精确的结果,所以这里我们使用BigDecimal类:public class whileDemo { public static void main(String[] args){ //定义BigDecimal类型的变量,用来接收最后的结果 BigDecimal sum=new BigDecimal(0.0); //定义B原创 2017-03-27 11:53:42 · 1118 阅读 · 0 评论 -
冒泡排序
冒泡排序属于交换排序中最简单的排序方法,基本思想是:相邻的数两两比较,如果反序,则交换位置算法实现:public class Bubble { public static void main(String[] args){ int a[]={10,23,11,56,45,25,58,28,84,79}; System.out.println("初原创 2017-03-27 14:38:56 · 287 阅读 · 0 评论 -
选择排序
选择排序的核心思想:每趟排序在当前待排序的序列中选出关键码最小的记录,添加到有序序列中(设置一个标记最小记录的index标识,始终指向最小记录)。优势:记录的移动次数少/** * 选择排序: * index:关键码标识,总是指向数值最小的元素所在位置下标 */public class Select { public static void main(String[]原创 2017-03-28 10:51:21 · 177 阅读 · 0 评论 -
直接插入排序
核心思想:每次将待排序的记录按其关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序。public class Insert { public static void main(String[] args){ int a[]={49,27,65,97,76,13,35,5,12,58,65}; int i,j,temp;原创 2017-03-28 11:33:11 · 258 阅读 · 0 评论 -
经典算法--百钱买百鸡
百钱买百鸡:公鸡5元一只,母鸡3元一只,小鸡1元三只,现有100元钱怎么买100只鸡?思路:1.100元最多能买公鸡20只,母鸡33只2.在买的公鸡数不超过20,母鸡数不超过33的情况下,剩下的买小鸡3.当公鸡*5+母鸡*3+小鸡/3=100元且小鸡%3==0时,满足条件4.输出满足条件的各鸡数public class Hmhc { public static原创 2017-03-28 14:02:20 · 5247 阅读 · 0 评论 -
经典算法--韩信点兵
韩信点兵是一道古代的数学题,题意:韩信点兵不足百人,三人一排多1人,七人一排少2人,五人一排正好。问韩信带兵多少?/** * 韩信点兵: * 韩信带兵不足百人,3人一排多1人,7人一排少2人,5人一排刚好,问韩信总共带兵多少? * 思路: * 1.假设带兵总数为total,由条件知total<100 * 2.从0-100遍历符合条件的total值 * 3.条件:用total分别原创 2017-03-28 14:20:42 · 6034 阅读 · 0 评论 -
快速排序
快速排序的思想:对于快速排序,首先要解决的就是轴值的问题,最简单的方法就是选择第一个元素作为轴值,这样可以保证不出现正序或反序的问题。核心思想是:以轴值为基准,将带排序的记录分割成独立的两部分,左边都是小于等于轴值的记录,右边都是大于等于轴值的记录,然后在对两部分分别重复上述过程,直到整个序列有序!public class Parti { public void partit原创 2017-03-28 10:43:45 · 260 阅读 · 0 评论