java常见经典算法题
笔者整理出了经典的java算法题⽬,并且每⼀个⼿敲出来了正常运⾏出结果,希望对⼤家有帮助,后续本篇博客会继续补充和完善经典算法题,持续更新!
1:冒泡排序
package sang.算法;
import java.util.Arrays;
import java.util.Collections;
/**
* create by 86159 on 2021/1/12
*/
public class冒泡排序{
public static void main(String[] args){
// 冒泡排序是对数组操作,如果是集合,先⽤Array()转化为数组
Integer[] arrays ={20,58,12,-12,-39,108,691,2};
// 排序⽅式⼀:
Arrays.sort(arrays);//升序
System.out.println("升序排列:");
for(int num : arrays){
System.out.print(num +",");
}
Arrays.sort(arrays, verseOrder());//倒序
System.out.println("--------------");
System.out.println("倒叙排列:");
for(int num : arrays){
System.out.print(num +",");
}
// 以上为sort()⽅法⾃带的排序⽅法,但往往⾯试时需要⼿写冒泡排序排序,考验基本功
//排序⽅式⼆:冒泡排序(务必要会⼿写)
for(int i =0; i < arrays.length -1; i++){
for(int j =0; j < arrays.length -1- j; j++){
if(arrays[j]< arrays[j +1]){
int temp = arrays[j];
arrays[j]= arrays[j +1];
arrays[j +1]= temp;
}
}
}
//打印结果
System.out.println("--------------");
System.out.println("冒泡倒序排序结果:");
for(int num : arrays){
System.out.print(num +",");
}
}
}
运⾏结果如下:
升序排列:
-39,-12,2,12,20,58,108,691,--------------
倒叙排列:
691,108,58,20,12,2,-12,-39,--------------
冒泡倒序排序结果:
691,108,58,20,12,2,-12,-39,
2:九九乘法表
package sang.算法;
/**
* create by chuxia0811 on 2021/1/16
*/
public class九九乘法表{
public static void main(String[] args){
for(int i =1;i<=9;i++){
for(int j =1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
}
}
运⾏结果如下:
1*1=1
1*2=22*2=4
1*3=32*3=63*3=9
1*4=42*4=83*4=124*4=16
1*5=52*5=103*5=154*5=205*5=25
1*6=62*6=123*6=184*6=245*6=306*6=36
1*7=72*7=143*7=214*7=285*7=356*7=427*7=49
1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64
1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81 3:最⼤公约数和最⼩公倍数
package sang.算法;
/
**
* create by chuxia0811 on 2021/1/16
*/
public class最⼤公约数和最⼩公倍数{
public static void main(String[] args){
//最⼩公倍数等于最⼤公约数乘以两者中较⼤的数
int a =16;
int b =20;
System.out.println("最⼤公约数:"+f(a, b));
System.out.println("最⼤公约数:"+(a < b ?f(a, b)* b :f(a, b)* a)); }
public static int f(int a, int b){
if(a < b){
int temp = a;
a = b;
b = temp;
}
if(a % b ==0){
return b;
}
return f(a, a % b);
}
}
运⾏结果如下:
最⼤公约数:4
最⼤公约数:80
4:⽔仙花数
package sang.算法;
/**
* create by chuxia0811 on 2021/1/16
*/
public class⽔仙花数{
public static void main(String[] args){
/** 什么是⽔仙花数?⽐如⼀个三位数,它的个位的⽴⽅加上⼗位的⽴⽅再加上百位的⽴⽅等于这个数本⾝的话,此数叫作⽔仙花数.
如:某三位数abc,如果满⾜a^3+b^3+c^3=abc,则abc是⽔仙花数。
*/
for(int i =100; i <999; i++){
int a = i %100%10;//获取个位数
int b = i /10%10;//获取⼗位数
int c = i /100;//获取百位数
if(i == a * a * a + b * b * b + c * c * c){
System.out.println("⽔仙花数"+ i);
}
}
}
}
⽔仙花数153
⽔仙花数370
⽔仙花数371
⽔仙花数407
5:求中位数
import java.util.Arrays;
/**
* create by chuxia0811 on 2021/1/16
*/
public class中位数{
/
/ 中位数:是指⼀组数据从⼩到⼤排列,位于中间的那个数。可以是⼀个(数据为奇数),也可以是2个的平均(数据为偶数)
public static void main(String[] args){
int mediu1 =0;
//1.数组为奇数个数,则先按正序排序,再取最中间的值
int[] a ={9,5,8,2,10};//
Arrays.sort(a);
if(a.length %2==1){
//注意数组⼩标从0开始,5个数应该取a[2]
mediu1 = a[(a.length)/2];
}
System.out.println("奇数位中位数为:"+ mediu1);
//2.数组为偶数个数,中位数按正序排列,取中间两个数的平均值
int[] b ={9,5,8,2,10,12};
java valueofDouble mediu2 =null;
Arrays.sort(b);
if(b.length%2==0){
mediu2 = Double.parseDouble(b[(b.length)/2-1]+b[(b.length)/2]+"")/2;
}
System.out.println("偶数位中位数为:"+mediu2);
}
}
运⾏结果如下:
奇数位中位数为:8
偶数位中位数为:8.5
6:求素数
/**
* create by chuxia0811 on 2021/1/16
*/
public class求素数{
public static void main(String[] args){
//求1~100以内的素数,素数即除了1和本⾝,没有能够被整除的数 int count =0;
for(int i =1; i <=100; i++){
for(int j =2; j < i; j++){
if(i % j ==0){
break;
}
if(j+1==i){
System.out.println(i+"是素数");
count++;
}
}
}
System.out.println("1~100以内素数有:"+count+"个。");
}
}
运⾏结果如下:
3是素数
5是素数
7是素数
11是素数
13是素数
17是素数
19是素数
23是素数
29是素数
31是素数
37是素数
41是素数
43是素数
47是素数
53是素数
59是素数
61是素数
67是素数
71是素数
73是素数
79是素数
83是素数
89是素数
97是素数
1~100以内素数有:24个。
7:回⽂数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论