首页 > 代码库 > 第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)
第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)
获取数组的最值(最大值和最小值)
思路: 1、获取最值需要进行比较,每一次比较都会有一个较大的值,因为该 值不确定,需要一个变量进行临储。
2、让数组中的每一个元素都和这个变量中的值进行比较,如果大于了 变量中的值,就用该变量记录较大值。
3、当所有的元素都比较完成,那么该变量中存储的就是数组中最大值
例子://最大值
int arr[] = {1,2,3,4,5,};
int max = arr[0];
for(int a=0;a<arr.length;a++){
{if(arr[a])>arr[max]{
mac=arr[a];}
}
system.out.println("数组arr最大值为:"+max);同理去最小值。
选择排序
选择排序:一开始默认角标为0的数为最小的数,依次和后面的数比较,发现小的记录下标,最
后把角标为0的数和最后的角标数交换,第二次从角标为1的数开始遍历;
int arr[] = {1,2,3,4,5};
for(int i = 0;i < arr.length-1;i++){
for(int a = i+1;a<arr.length;a++){
if(arr[i] > arr[a]){
int temp = arr[a];
arr[a] = arr[i];
arr[i] = temp;
}
}
}
System.out.print("{");
for(int b = 0;b < arr.length;b++){
if(b != arr.length-1){
System.out.print(arr[b]+",");
}else{
System.out.print(arr[b]+"}");
}
}
冒泡排序
冒泡排序:是通过两两比较,把比较的得到的最大值或最小值放到数组的最后面,然后依次循环
第一次取到最大值或者最小值,进入第二次循环,第二次循环也是两两比较,因为第
一次循环的时候我们的得到的值已经和前面的值进行了比较判断,所以第二次循环的
时候就不需要再把前一次比较得到的值再进行一个比较,所以我们的第二个for循环里
面会有一个.length-i-1;
int[] arr = {3,2,4,7,6,5,9,8,10,20,1};
for(int a = 0;a<arr.length-1;a++){
for(int b = 0;b<arr.length-1-i;b++){
if(arr[a]>arr[b+1]){
int temp = arr.[a];
arr.[a] = arr.[b];
arr.[b] = temp ;
}
}
练习:
控制台用*输出大写的A;
for (int a = 1;a<=5;a++){
if(a==1){ //当为第一行时,我们只输出5个空格和一个*结束
//1.循环输出空格;
for(int i = 5;i>a;i--){ //输出5个空格的循环,以此减少到1;
Systen.out.print(" "); //循环输出空格时不提行;
} Systen.out.println("*"); //第一行结束要换行所以用println;
} else{
for(int i = 5;i>a;i--){ //输出5个空格的循环,以此减少到1;
Systen.out.print(" "); //循环输出空格时不提行;
Systen.out.println("*"); //接着输出空格,加*;
if(a==5/2+5%2){ //取到中间值时;
for (int b =1;b<=2*(a-1)-1;b++){
Systen.out.print(" "); //循环输出空格时不换行;
} Systen.out.println("*"); //空格循环结束后输出“*”,再提行;
} else { // 空格规律为*(a-1)-1;
for(int b =1;b<=2*(a-1)-1;b++){
Systen.out.print(" "); //循环输出空格时不换行;
} Systen.out.println("*"); //空格循环结束后输出*,再提行
}
}
第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)