【零基础学Java】第七天 冒泡排序和杨辉三角(详解)

本文是一位大二学生分享的Java自学心得,通过讲解冒泡排序和杨辉三角的实现,帮助读者深入理解一维和二维数组。文章包含详细代码示例,冒泡排序中通过优化避免了不必要的比较,杨辉三角的实现则揭示了其数学规律。适合初学者阅读和实践。
摘要由CSDN通过智能技术生成

📄个人简介
🔔作者简介:大家好,我是小学生!!🙈大二学生一枚,目前正在自学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();
     }
}
}
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学生!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值