java实现经典算法
来源:互联网 发布:武汉淘宝美工培训学校 编辑:程序博客网 时间:2024/05/29 17:22
冒泡排序
/***冒泡排序*比较相邻的两个元素,如果第一个比第二个大则将两个交换顺序*i<numbers.length 控制排序轮数 一般为数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了*j<numbers.length-i 因为经过一个排序后,最大(或最小)的元素都已经放到了数组的最后一位,下次不用再进行比较。所以长度改变*/public void bubbleSort(int[] numbers){ for(int i=1;i<numbers.length;i++){ for(int j=0;j<numbers.length-i;j++){ if(numbers[j]>numbers[j+1]){ int temp=numbers[j]; numbers[j]=numbers[j+1]; numbers[j+1]=temp; } } }}
直接选择排序
属于选择排序的一种,排序速度比冒泡排序快,也是最常用的
/*** 由于交换位置放在了第一层循环里面,所以速度会比冒泡(放在了第二层循环中)快*/public void selectSort(int[] array){ //作为最大值(或最小)的下标 int index; for(int i=1;i<array.length;i++){ //默认第一个最大(或最小) index=0; for(int j=1;j<array.length-i;j++){ //取最大值的下标 if(array[j]>array[index]){ index=j; } } //在上面的for循环中找到了最大(最小)值的下标 //交换位置 //一次循环都会将一个最值放到最后,所以长度逐次递减 int temp=array[array.length-i]; array[array.length-i]=array[index]; array[index]=temp; }}
反转排序
以相反的顺序把原有数组的内容重新排序
/***基本思想:将数组的最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换*/public void ReverseSort(int[] array){ for(int i=0;i<array.length/2;i++){ int temp=array[i]; array[i]=array[array.length-1-i]; array[array.length-1-i]=temp; }}
费氏数列
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子数量为多少?
分析:兔子的数量规律为:1,1,2,3,5,8,13,21….
当n>=3时,fn=f(n-1)+f(n-2); n为下标
java实现:
public int getCount(int N){ if(N==1||N==2){ return 1; }else { return getCount(N-1)+getCount(N-2); }}
判断素数个数并输出
素数:除了1和它本身以外不再有其他因数
判断N到M直接素数的个数,并输出(N < M)
/*** 两次循环*第一次循环是n到m,取每个数*第二个循环是判断这个数是不是素数*/public void judgePrimeNumber(int N;int M){ int count=0; for(int i=N;i<=M;i++){ boolean flag=true; //从2到自身-1,如果有因数,则退出判断 for(int j=2;j<i;j++){ if(i%j==0){ flag=flase; break; } } //判断这个数是不是素数,如果是则数量加1并打印 if(flag==true){ count+=1; System.out.print(i+" "); } } System.out.println("从"+N+"到"+M+"有"+count+"个素数");}
打印图形类
菱形:
* *** ************ ***** *** *
java实现:
/***主要分两部分实现,上三角形和下三角形*上三角形规律:空格数逐层减1,* 逐层加2*下三角规律:空格数加1;* 逐层减3*/public void lingxing(){ //控制上三角的循环 for(int i=1;i<=4;i++){ //打印空白 for(int k=1;k<=4-i;k++){ System.out.print(" "); } //打印 * for(int j=1;j<=2*i-1;j++){ System.out.print("*"); } //换行 System.out.print(); } //下三角 for(i=3;i>=1;i--){ for(int k=1;k<= 4-i;k++){ System.out.print(" "); } for(int j=1;j<=2*i-1;j++){ System.out.print("*"); } System.out.println(); }}
打印三角形
****************************
代码是菱形去掉打印空格的部分
阅读全文
0 0
- 经典算法Java实现
- java实现经典算法
- 经典排序算法JAVA实现
- 用java实现的经典递归算法
- 用java实现的经典递归算法
- Java 实现的经典排序算法
- java实现的经典排序算法
- 一些经典排序算法的java实现
- 常见经典排序算法的java实现
- 【递归经典题目】汉诺塔算法 Java实现
- 经典算法问题的java实现<一>
- 经典算法问题的java实现<二>
- 经典排序算法java实现总结
- 经典排序算法分析及其Java实现
- 经典算法整理(java实现)
- 用java实现的经典递归算法
- Java语言实现经典冒泡排序算法
- c#经典算法实现
- 五、C#学习基础篇---事件
- Java后台重定向
- 两数乘积的位数
- iOS11_适配总结
- 安装MySQL最后未响应的解决
- java实现经典算法
- [ERR] Node 192.168.25.128:7111 is not empty. Either the node already knows other nodes (check with C
- Spring Boot 传参方式
- Apache Slider设计理念与基本架构
- 微擎开发记录(1)
- HDU2013
- html中的表格
- android广播接受者学习
- PAT乙级1043 输出PATest