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

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


前言

1.双非在校大学生,想通过自学Java进大厂

2.给跟我一样的大学生分享我的经历,和学习资源

3.本版块将会记录从Java入门到就业的所有学习笔记和资源

4.我还会分享我在学习Java中遇到的各种问题和各种解决方法

今天学习两道在初学编程时经典题,冒泡排序和杨辉三角,理解这两道题,会对一维数组和二维数组有更深的理解。

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();     }}}