Java编程基础-实验题

在这里插入图片描述

👦本文作者:小小白的崛起之路
💾更新日期: 2021.7.27
📢本文声明: 由于小小白水平有限,内容难免有错误和不准确之处,望读者批评指正!ψ(`∇´)ψ

实验1-1 随机点名器

一、实验描述

1、任务描述

编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字。随机点名器具备3个功能,包括存储全班同学姓名、总览全班同学姓名和随机点取其中一人姓名。比如随机点名器首先分别向班级存入张飞、刘备和关羽这3位同学的名字,然后总览全班同学的姓名,打印出这3位同学的名字,最后在这3位同学中随机选择一位,并打印出他的名字,至此随机点名成功。

2、任务目标

学会分析“随机点名器”任务实现的逻辑思路。
能够独立完成“随机点名器”的源代码编写、编译及运行。
能够根据“随机点名器”程序功能的不同,将功能封装到不同的方法中。
能够使用数组解决多个同学姓名的存储问题。
掌握方法和数组的使用。

3、设计思路(实现原理)

(1)在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,可以使用数组解决多个数据的存储问题。创建一个可以存储多个同学姓名的数组,打算存几个同学姓名就创建相应长度的数组。
(2)键盘输入同学姓名,将输入的姓名依次赋值给数组各元素,此时便存储了全班同学姓名。键盘输入需要使用Scanner 类,以下代码能够从键盘输入中读取一个字符串:
Scanner sc = new Scanner(System.in);
String str= sc.next();
(3)对数组进行遍历,打印出数组中每个元素的值,即实现了对全班每一位同学姓名的总览;
(4)根据数组长度,获取随机索引,例如数组长度为3,则获取的随机索引只能在0~2之间,通过随机索引获取数组中的姓名,该姓名也就是随机的姓名。获取随机索引可以使用Random类中的nextInt(int n)方法。
(5)“随机点名器”明确地分为了三个功能,如果将多个独立功能的代码写到一起,则代码相对冗长,可以针对不同的功能将其封装到不同的方法中,将完整独立的功能分离出来,然后只需要在程序的main()方法中调用这3个方法即可。

二、实验实现

随机点名器程序的实现代码:

package com.java.zjlyyds;

import java.util.Random;
import java.util.Scanner;
public class  test3 {
	private static Scanner myScanner;
    public static void main(String[] args) {
        // 1.初始化学生数组
        String[] student = new String[3];
        scanfStudentArray(student);//输入学生
        printStudentArry(student);//输出学生

        myScanner=new Scanner(System.in);
        while(true){
            System.out.println("请输入1进行随机点名,输入0结束");
            int cnt = myScanner.nextInt();
            //2.产生一个随机数(0~学生数-1)
            int randNum=new Random().nextInt(student.length);
            //3.输出随机数对应的学生姓名
            if(cnt == 1)
                System.out.println("随机选择的同学是:"+student[randNum]);
            else
                break;
        }
    }

    private static void printStudentArry(String[] student) {
        for (int i = 0; i < student.length; i++) {
            System.out.print(student[i]+" ");
        }
        System.out.println();
    }

    private static void scanfStudentArray(String[] student) {
    	myScanner=new Scanner(System.in);
        for (int i = 0; i < student.length; i++) {
            System.out.println("请输入第"+(i+1)+"个学生的姓名:");
            student[i]=myScanner.next();
        }
    }

}

运行结果截图为图1-1:
在这里插入图片描述

三、实验总结

在文件2-1中,第1018行代码定义了一个addStudentName()方法,用于实现存储全班同学姓名的功能,其中通过创建一个String类型的数组students来存储多个同学的姓名,借助Scanner类通过键盘输入的方式输入同学的姓名,并将这些姓名依次存储到数组元素中;第2330行代码定义一个printStudentName()方法,用于实现总览全班同学姓名的功能,通过遍历数组students的方式打印全班每一位同学的姓名;第35~42行代码定义一个randomStudentName()方法,用于实现随机点名其中一人的功能,通过Random类的nextInt(intn)方法获取随机索引,然后根据随机索引从数组中获取姓名,这个姓名就是随机点名到的同学姓名。

实验1-2 变量的强制类型转换

一、实验描述

1、考核知识点
名 称:变量的类型转换
2、练习目标
掌握不同数据类型间的强制类型转换
3、需求分析
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。例如,两种类型彼此不兼容,或者目标类型取值范围小于源类型,都需要进行强制类型转换。
4、设计思路(实现原理)

1)编写一个类Example02
2)在Example02中的main()方法中定义一个int类型的变量i和byte类型的变量b,并将变量i的值赋给变量b
3)使用println语句打印出变量b的值

二、实验实现

代码:

static byte Example02(int i,byte b)
	{
		b=(byte)i;
		System.out.println(b);
		return b;
	}
public static void main(String[] args)
	{
        //实验1-2  变量的强制类型转换
		int i=3;
		byte b=0;
		Example02(i,b);
		
		
	}

运行结果截图为图1-2:

图1-2运行结果在这里插入图片描述

三、实验总结

1、强制类型转换,具体格式如下:
目标类型 变量 = (目标类型)值
2、在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换,如将一个int类型的数转为byte类型,这样做极容易造成数据精度的丢失。int在内存中占用4个字节。byte类型的数据在内存中占用1个字节,当将变量i的数据在内存中占的内存大于1个字节时,前面3个高位字节的数据会丢失,数值也会发生改变。

实验1-3 运算符的优先级

一、实验描述

1、考核知识点
名称:运算符的优先级
2、练习目标
掌握运算符之间的优先级
3、需求分析
当使用不同的运算符进行运算时,应该按照一定的顺序进行运算,即根据运算符的优先级进行运算。
4、设计思路(实现原理)

1)编写一个类Example03
2)在main方法中定义两个int型变量x和y
3)将表达式3>2*x?x++:–x赋值给y
4)用输出语句分别输出变量x和y的值

二、实验实现

代码:

public static int Example03(int x,int y)
	{
	    y=3>2*x?x++:--x;
		System.out.printf("%d,%d",x,y);
return y;
}
//实验1-3 运算符的优先级
		int x=1;
		int y=3;
		Example03(x,y);	

运行结果截图为图1-3:

图1-3运行结果在这里插入图片描述

三、实验总结

1.本实验中表达式的运算过程如下所示:

1)在表达式y=3>2*x?x++:--x;中赋值运算符=的优先级最低,所以要先运算=右侧的表达式;
2)?:为三元运算符,该运算符的优先级较低,要先运算?前面的表达式。
3*的优先级比>的高,所以3>2*1为true。按照三元运算符的运算规则表达式等价于y=x++
4)x++++在后面,所以要先进行其它运算再自增,最后结果为x=2,y=1

2、下表列举了Java中运算符的优先级,数字越小优先级越高。
在这里插入图片描述

3、其实没有必要去刻意记忆运算符的优先级。由于运算符“()”的优先级最高,编写程序时,尽量使用括号“()”来实现想要的运算顺序,以免产生歧义。

实验1-4 if条件语句

一、实验描述

1、考核知识点
名称:if条件语句
2、练习目标
掌握if条件语句的语法格式
了解if条件语句的执行流程
3、需求分析
if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。本实验使用if…else if…else语句实现判断某月是哪个季节的功能。
设计思路(实现原理)

1)编写一个类Example04
2)定义一个变量month用于存储月份。
3)用if条件语句,判断这个月份在哪一个季节并输出结果,如:春季是3、4、5月,夏季是6、7、8月,秋季是9、10、11月,冬季是12、1、2月
4)由于一年只有12个月,所以要过滤除1-12以外的月份值

二、实验实现

代码:

package com.java.zjlyyds;

import java.util.Scanner;

public class test1 {
	private static Scanner myScanner;
	
	public static int Example04(int month)
	{
		while(month>=1&&month<=12)
		{
			if(month>=3&&month<=5)
			{
				System.out.println("春季!");
			}
			else if(month>5&&month<=8)
			{
				System.out.println("夏季!");
			}
			else if(month>8&&month<=11)
			{
				System.out.println("秋季!");
			}
			else
			{
				System.out.println("冬季!");
			}
			break;
		}
		return month;
	}
	
	public static void main(String[] args)
	{
       
		
	实验1-4 if条件语句
		
    myScanner = new Scanner(System.in);
	System.out.println("请输入");
	int month = myScanner.nextInt();
Example04(month);
				
	}
}

运行结果截图为图1-4:

图1-4运行结果在这里插入图片描述

三、实验总结

1、f…else if…else语句用于对多个条件进行判断,进行多种不同的处理。if…else if…else语句具体语法格式如下:

if (判断条件1) {
执行语句1
} else if (判断条件2) {
执行语句2
}

else if (判断条件n) {
执行语句n
} else {
执行语句n+1
}

if…else if…else语句的执行流程如图1-5所示。

图1-5流程图在这里插入图片描述

2、因为一年只有12个月,所以当month>12时是不符合逻辑的数据,这时会打印“没有这个月份”。在编程过程中,经常要考虑程序在实际环境下是否符合逻辑需求。
3、“||”表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。所以只要符合三个条件中的一个就会被判断为这个季节。

实验1-5 switch条件语句

一、实验描述

1、考核知识点
名称:switch条件语句
2、练习目标
熟悉switch条件语句的语法格式
了解switch条件语句的特点
3、需求分析
switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。本实验使用switch 条件语句实现判断选择题对错的功能。
4、设计思路(实现原理)
1)编写一个类Example05
2)定义一个变量answer用于存储答案选项
3)用switch条件语句判断如果变量answer为B则正确,其它则错误
4)如果变量answer不等于ABCD四个选择则打印“不存在此选项”

二、实验实现

代码:

package com.java.zjlyyds;

import java.util.Scanner;

public class test2 {
	private static Scanner myScanner;
	public static void main(String[] args) {
        System.out.println("请输入答案:");
        myScanner=new Scanner(System.in);
        char answer= myScanner.next().charAt(0);
        switch(answer)
        {
            case 'B':System.out.println("正确");break;
            case 'A':
            case 'C':
            case 'D':System.out.println("错误");break;
            default:System.out.println("不存在此选项");
        }
	}
}

运行结果截图为图1-6:

图1-6运行结果在这里插入图片描述

三、实验总结

1、switch语句的执行流程是:根据表达式的值查找与其匹配的项,如果有匹配项,则执行该匹配项下面的语句。如果没有匹配项,就会执行default后面的语句。
2、switch关键字后括号内的表达式可以是byte,short,int,char四种类型;在JDK5以后表达式可以是枚举;在.JDK7以后表达式可以是字符串。
3、switch语句只适合判断若干值的情况,不适合判断范围。
4、if和switch都可以判断值的情况,这时应该使用switch语句,因为switch的效率比if语句高。

实验1-6 while循环语句

一、实验描述

1、考核知识点
名称:while循环语句
2、练习目标
掌握while循环语句的语法格式和使用
了解while循环语句的特点
3、需求分析
while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环才会结束。本实验使用while语句实现统计1-10以内奇数的功能。
4、设计思路(实现原理)
1)编写一个类Example06
2)定义一个变量x为1,用while语句循环条件为x<=10
3)在while循环中,使用表达式x%2判断是否为奇数,如果为奇数,则变量count的值加1。

二、实验实现

代码:

package com.java.zjlyyds;

public class test3 {
	public static void main(String[] args) {
		 int x=1;
	        int count=0;
	        while(x<=10)
	        {
	            if(x%2==1)
	                count++;
	            x++;
	        }
	        System.out.println(count);
	}
}

运行结果截图为图1-7:

图1-7运行结果在这里插入图片描述

三、实验总结

1、while循环语句和条件判断语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句。区别在于,while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。
2、while循环的执行流程如图1-8所示。

图1-8流程图在这里插入图片描述

实验1-7 for循环语句

一、实验描述

1、考核知识点
名称:for循环语句
2、练习目标
掌握for循环语句的语法格式和使用
了解for循环语句的特点
3、需求分析
for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。本实验使用for循环语句计算1+2+3+4+5…+100表达式的结果
4、设计思路(实现原理)
1)编写一个类Example07
2)在该类中定义一个变量sum来存储每次循环整数相加的和。
3)在for循环语句中定义变量x,循环条件为x<=100

二、实验实现

定义Example07类:

public class Example07 {

    public static void main(String[] args) {
               int count = 0;
        for (int x = 1; x <= 100; x++) {
            count += x;
        }
        System.out.println(count);
    }
}

运行结果截图为图1-9:

图1-9编译结果在这里插入图片描述

三、实验总结

1、在for循环中,for关键字后面()中包括了三部分内容:初始化表达式、循环条件和操作表达式,它们之间用“;”分隔,{}中的执行语句为循环体。
2、通过序号来具体分析for循环的执行流程。具体如下:

for(① ; ② ; ③){

}

第一步,执行①
第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步
第三步,执行④
第四步,执行③,然后重复执行第二步
第五步,退出循环

实验1-8 for循环嵌套

一、实验描述

1、考核知识点
名称:循环嵌套
2、练习目标
掌握循环嵌套的使用和执行顺序
3、需求分析
在编程过程中,经常需要双重循环或多重循环,这就需要循环语句的嵌套。最常见的循环嵌套就是在for循环中嵌套for循环。为了让初学者熟悉for循环嵌套的使用,本实验将演示如何用for循环嵌套打印由 星组成的直角三角形。具体要求如下:
在这里插入图片描述

4、设计思路(实现原理)
在这里插入图片描述

二、实验实现

定义Example08类:

public class Example08 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for (int i = 0; i < 5; i++) {
            for (int j = 5 - i; j >= 1; j--)
                System.out.print("*");
            System.out.println();
        }
    }
}

运行结果截图为图1-10:

图1-10运行结果在这里插入图片描述

三、实验总结

由于嵌套循环程序比较复杂,下面分步骤进行讲解,具体如下:
第一个三角形:
1、当x=0时,y=0且y<5,循环5次,完成后返回到外层循环进行换行。
2、当x=1时,y=1且y<5,循环4次,完成后返回到外层循环换行。
3、当x=2时,y=2,循环3次,完成后返回到外层循环换行。
4、当x=3时,y=3,循环2次,完成后返回到外层循环换行。
5、当x=4时,y=4,循环1次,完成后返回到外层循环换行。由于x<5所以循环终止,打印结束。
第二个三角形:
1、当x=0时,y=0且y<=0,循环1次,完成后返回到外层循环进行换行。
2、当x=1时,y=0且y<=1,循环2次,完成后返回到外层循环进行换行。
3、当x=2时,y=0且y<=2,循环3次,完成后返回到外层循环进行换行。
4、当x=3时,y=0且y<=3,循环4次,完成后返回到外层循环进行换行。
5、当x=4时,y=0且y<=4,循环5次,完成后返回到外层循环进行换行。由于x<5所以循环终止,打印结束。

实验1-9 方法的定义

一、实验描述

1、考核知识点
名称:方法的定义
2、练习目标
掌握方法的定义
3、需求分析
为了减少重复代码编写的问题,Java中可以将具有相同功能的重复代码提取出来,封装成方法。本实验定义一个方法,该方法能够实现四则运算的功能。
4、设计思路(实现原理)

1)编写一个类Example09
2)定义一个方法siZe,设置三个参数,两个数字为int型,一个符号为char型
3)在方法中,用if选择语句根据传入的符号参数进行不同的运算
4)如果传入的符号不包含在加减乘除四个符号中则输出“符号错误”
5)在main方法中调用方法计算3*0的结果,测试方法是否成功运算出正确结果

二、实验实现

定义Example09类:

import java.util.Scanner;

public class Example09 {
    public static int siZe(int a, int b, char c) {
        if (c == '+')
            return a + b;
        else if (c == '-')
            return a - b;
        else if (c == '*')
            return a * b;
        else if (c == '/')
            return a / b;
        else
            System.out.println("符号错误");
        return 0;
    }

    public static void main(String[] args) {
        int a, b;
        char c;
        while (true) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入2个整数及运算符号");
            a = in.nextInt();
            b = in.nextInt();
            c = in.next().charAt(0);
            int p = siZe(a, b, c);
            System.out.println(p);
        }
    }
}

运行结果截图为图1-11:

图1-11运行结果在这里插入图片描述

三、实验总结

1、在Java中,声明一个方法的具体语法格式如下:

修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名2,......]){
// 执行语句
return 返回值;
}

2、需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。

实验1-10 方法的重载

一、实验描述

1、考核知识点
名称:方法的重载
2、练习目标
了解重载的定义
掌握方法重载的用法
3、需求分析
方法重载指的是方法名相同,参数类型或个数不同。本实验通过方法重载的方式实现九九乘法表的打印
4、设计思路(实现原理)

1)编写一个类Example10
2)在Example10中定义一个带参数的方法print99,该参数用于指定乘法表打印的行数
3)在Example10中定义一个方法print99,此方法没有参数。
4)在main方法中分别调用无参方法print99()和有参方法print99(6),测试两个重载的方法print99能否成功打印出符合要求的乘法表。

二、实验实现

代码如下所示:

package com.java.zjlyyds;

public class test3 {
	 public static void print99(int n)
	    {
	        for(int i=1;i<=n;i++)
	        {
	            for(int j=1;j<=i;j++)
	            {
	                System.out.print(j+" * "+i+" = "+j*i+" ");
	            }
	            System.out.println();
	        }
	    }
	    public static void print99()
	    {
	        System.out.println("不打印");
	    }
	    public static void main(String[] args) {
	        // TODO Auto-generated method stub
	        print99(6);
	        print99();

	    }
	
}

运行结果截图为图1-12:

图1-12运行结果在这里插入图片描述

三、实验总结

1、方法的重载是在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同。
2、值得注意的是,方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数个数或参数类型不相同。

实验1-11 一维数组的定义

一、实验描述

1、考核知识点
名称:数组的定义
2、练习目标
掌握一维数组的定义
3、需求分析
数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。请定义一个数组,将序列{0,1,2,3,4}赋值给数组,并写一个方法用来访问数据的每一个元素。
4、设计思路(实现原理)
1)定义一个数组,在初始化数组时有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。可以在定义数组时将序列{0,1,2,3,4}赋值给数组。
2)定义一个方法输出数组的元素,可以用for循环语句依次输出数组的元素,各元素用“,”间隔可以更清楚的输出元素。
3)在最后一个元素输出时,后面就不需要加“,”了,所以循环到length-1时不打印“,”。

二、实验实现

代码:

package com.java.zjlyyds;

public class test3 {
	 public static void main(String[] args) {
	        int []a= {0,1,2,3,4};
	        for(int i=0;i<a.length-1;i++)
	            System.out.print(a[i]+",");
	        System.out.println(a[a.length-1]);
	    }
	
}

运行结果截图为图1-13:

图1-13运行结果在这里插入图片描述

三、实验总结

1、每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报数组越界异常ArrayIndexOutOfBoundsException。所谓异常指程序中出现的错误,它会报告出错的异常类型、出错的行号以及出错的原因。
2、在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常NullPointerException。

实验1-12 数组最值

一、实验描述

1、考核知识点
名称:数组的常见操作-数组的最值
2、练习目标
掌握如何获取一维数组的最值
3、需求分析
在操作数组时,经常需要获取数组中元素的最值。定义一个数组,并获取该数组中值最小的元素。
4、设计思路(实现原理)

1)定义一个数组。
2)定义一个方法,用来获取最小值。该方法应返回一个int型的数值,参数为数组类型。在方法中,定义一个临时变量min,用于记住数组的最小值。首先假设数组中第一个元素arr[0]为最小值,然后使用for循环对数组进行遍历,在遍历的过程中只要遇到比min值还小的元素,就将该元素赋值给min。这样一来,变量min就能够在循环结束时记住数组中的最小值。
3)在main方法中调用该方法,将定义的数组作为参数传给方法,获取该数组的最小值。

二、实验实现

代码:

 public static int FindMin(int[] a) {
    int min = a[0];
    for (int i = 0; i < a.length; i++) {
        if (a[i] < min)
            min = a[i];
    }
    return min;
}

public static void main(String[] args) {
    int[] a = { 7, 8, 4, 89, 4, 64, 7, 6, 75, 14, 9 };
    int min = FindMin(a);
    System.out.println(min);

}

运行结果截图为图1-14:

图1-14运行结果在这里插入图片描述

三、实验总结

FindMin()方法用于求数组中的最小值,该方法中定义了一个临时变量min,用于记住数组的最小值。需要注意的是,在for循环中的变量i是从1开始的,这样写的原因是程序已经假设第一个元素为最小值,for循环中只需要从第二个元素开始比较,从而提高程序的运行效率。

实验1-13 数组排序

一、实验描述

1、考核知识点
名称:数组的常见操作-数组的排序
2、练习目标
掌握一维数组中元素的排序
3、需求分析
在操作数组时,经常需要对数组中元素进行排序。常用的排序算法有选择排序,冒泡排序等。请定义一个数组,用选择排序算法将数组中的元素进行从小到大的排序。
4、设计思路(实现原理)
选择排序法的原理是:首先找到数组中的最值,将最小值(最大值)的下标与第一个元素的下标交换,再在剩下的元素中找最小值(最大值)的下标与第二个元素的下标交换,以此类推,完成所有元素的排序。
对数组元素进行选择排序的设计思路是:
1)定义排序方法,在方法中,用for循环嵌套实现排序。第一层循环是从数组的第一个元素开始循环。第二层循环用于与第一层循环中的元素比较找出最值,并将最小值的下标跟第一个元素的下标进行互换。
2)为了方便观察排序结果,输出排序前和排序后的数组元素。

二、实验实现

代码:

package com.java.zjlyyds;

public class test3 {
	public static void main(String[] args) {
        int[] a = { 3, 8, 0, 5, 4, 3, 9, 32, 10, 25, 4, 1, 5, 78, 19, 25 };
        int l = a.length;
        for(int i =0; i < l; i++){
            System.out.print(a[i] + " ");
        }
        System.out.println();
        for (int i = 0; i < l - 1; i++) {
            for (int j = 0; j < l - 1 - i; j++) {
                if (a[j + 1] < a[j]) {
                    int temp = a[j + 1];
                    a[j + 1] = a[j];
                    a[j] = temp;
                }
            }
        }
        for(int i =0; i < l; i++){
            System.out.print(a[i] + " ");
        }
    }

}

运行结果截图为图1-15:

图1-15运行结果在这里插入图片描述

三、实验总结

常用的排序算法除了选择排序外,还有冒泡排序。在冒泡排序的过程中,不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。
接下来通过几个步骤来具体分析一下冒泡排序的整个过程,具体如下:

1、从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个元素比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮比较。
2、除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中第二大的数放在了倒数第二个位置。
3、以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

…狂奔的蜗牛~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值