📄个人简介
🔔作者简介:大家好,我是小学生!!🙈大二学生一枚,目前正在自学Java,如果大家觉得我写的还不错的话,希望大家给我点赞👍+收藏⭐+评论📢,有什么写的不对的地方还请大家多多指教🙏,共同进步。
📝个人主页:小学生!!
📖系列专栏
🌕阶段一:Java基础编程
💦目前已原创10篇🌕阶段二:数据结构与算法
🌕阶段三:操作系统
🌕阶段四:计算机网络
🔥今天学习两道在初学编程时经典题,冒泡排序和杨辉三角,理解这两道题,会对一维数组和二维数组有更深的理解。
🍁1.冒泡排序
public class BubbleSort{
public static void main(String [] args){
// 55 45 33 23 12 用最坏情况举例
// 45 33 23 12 55 第一轮 比较了4次
// 33 23 12 45 55 第二轮 比较了3次
// 23 12 33 45 55 第三轮 比较了2次
// 12 23 33 45 55 第四轮 比较了1次
// 总结:轮数 = 数据的个数减1,比较次数 = 数据个数-比较的轮数
// 但我们还发现当数据并不是完全无序时,会出现重复比较的操作。
// 为了优化排序的效率,我们可以设置一个标志来判断,上一轮比较是否发生交换,若没有发生交换就提前结束程序。
int [] arry = {55,45,33,23,12};
boolean flag = true ;
for(int i = 0 ; i < arry.length-1; i++){//比较的轮数
if(flag==false) break;
for(int j =0; j < arry.length -1-i ; j++){//每一轮比较的次数,注意这里i是从0开始,所以要减去1
flag = false;
if(arry[j+1] < arry[j]){
flag =true;
int temp = arry[j];
arry[j] = arry[j+1];
arry[j+1] = temp;
}
}
}
for (int i=0;i<arry.length;i++ ) {
System.out.print(arry[i]+"\t");
}
}
}
🍁2.杨辉三角
//经过分析可以发现
//1.行数等于那一行的数的个数
//2.每一行的第一个和最后一个数都为1
//3.从第三行开始,非第一个和非最后一个数都等于上一行这一列的数加上上一行前一列的数。
import java.util.Scanner;
public class YangHui{
public static void main(String []args){
Scanner inputline = new Scanner (System.in);
System.out.println("请输入你要输出的杨辉三角的行数:");
int line = inputline.nextInt();
//动态创建一个二维数组
int [][] arry = new int [line][];
for(int i=0;i < arry.length;i++){
//分配每一行的内存空间
arry[i] = new int [i+1];
for(int j=0;j < arry[i].length;j++){
//每一行的第一个数和最后一个数是1
if(j==0||j==arry[i].length-1){
arry[i][j] = 1;
}
else{
//其他数都是上一行的前列的的数和本列的数之和
arry[i][j]=arry[i-1][j]+arry[i-1][j-1];
}
}
}
for(int i=0;i<arry.length;i++){
for(int j=0;j<arry[i].length;j++){
System.out.print(arry[i][j]+" ");
}
System.out.println();
}
}
}