day09 数组(二)

1. 数组参数和返回值

数组作为参数和作为返回值与之前的使用方式一致。

package com.qfedu.test1;

import java.util.Scanner;

/**
 * 	需求:
 * 	1.编写方法实现 让用户输入5门成绩 并且返回这些成绩
 * 
 * 	2.编写方法根据用户传入的成绩数组 遍历成绩 并且打印
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		double[]  scores = inputScore();
		printScore(scores);
	}
	public static double[] inputScore(){
		Scanner input = new Scanner(System.in);
		double [] scores = new double[5];
		for (int i = 0; i < 5; i++) {
			System.out.println("请输入第"+ (i + 1) +"个人的成绩");
			double score = input.nextDouble();
			scores[i] = score;
		}
		return scores;
	}
	public static void printScore(double [] scores) {
		for (int i = 0; i < scores.length; i++) {
			System.out.println("第" + (i + 1)+"个人的成绩是:" + scores[i]);
		}
	}
}

2. 可变长参数

可变长参数:可接收多个同类型实参,个数不限(0个或者N个),使用方式与数组相同

语法:数据类型... 形参名

要求:必须定义在形参列表的最后,且只能有一个。

package com.qfedu.test1;
/**
 * 	可变长参数:可接收多个同类型实参,个数不限(0个或者N个),使用方式与数组相同
 * 	语法:数据类型... 形参名 
 * 	要求:必须定义在形参列表的最后,且只能有一个。
 * @author WHD
 *
 */
public class Test2 {
	public static void main(String[] args) {
		
		
		int [] nums = {1,2,3};
		arrayPrint(nums);
		
		printNum(1,2,3,4,5,6);
	}
	public static void printNum(int...nums) {
		for(int i = 0;i < nums.length;i++) {
			System.out.print("循环体中打印数字:" + nums[i] + "\t");	
		}
		System.out.println();
		System.out.println("printNum方法执行完毕");
	}
	
	public static void arrayPrint(int [] nums) {
		for (int i = 0; i < nums.length; i++) {
			System.out.println(nums[i]);
		}
	}
	

}

3. 排序

3.1 冒泡排序

冒泡排序:相邻的两个数值比较大小,互换位置。

外层循环控制比较的轮数 轮数永远是长度-1 n -1

内层循环控制每一轮比较的次数 最多的一次是长度-1 后续每轮依次递减1 n - 1 - i

 

package com.qfedu.test2;

import java.util.Arrays;

/**
 * 	排序算法:冒泡排序,选择排序,归并排序,桶排序,猴子排序,快速排序,二叉树排序
 * 	冒泡排序:相邻的两个数值比较大小,互换位置。
 * 
 * 	外层循环控制比较的轮数 轮数永远是长度-1    n -1 
 * 	内层循环控制每一轮比较的次数 最多的一次是长度-1  后续每轮依次递减1  n - 1 - i
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = a;
		a = b;
		b = c;
		System.out.println(a);
		System.out.println(b);
		
		int [] nums = {442,12,0,3,69,55,231,147,5};
		
		for (int i = 0; i < nums.length - 1; i++) {// 外层循环 控制比较的轮数 长度 - 1
			for(int j = 0;j < nums.length - 1 - i;j++) { // 内层循环 控制每一轮比较的次数 递减的 
				if(nums[j] > nums[j + 1]){
					int temp = nums[j];
					nums[j] = nums[j + 1];
					nums[j + 1] = temp;
				}
			}
		}
		
		System.out.println(Arrays.toString(nums));
		
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i] + "\t");
		}
	}
}

3.2 选择排序

选择排序:固定值与其他值依次比较大小,互换位置。

回顾冒泡排序存在哪些问题:大拿 160 广坤 175 赵四 180

选择排序

外层循环 控制比较的数A 外层循环 n - 1

内层循环 控制比较的数B 内层循环 初始值 i + 1

 

package com.qfedu.test3;

import java.util.Arrays;

/**
 * 	选择排序:固定值与其他值依次比较大小,互换位置。
 * 	回顾冒泡排序存在哪些问题:大拿 160  广坤 175     赵四 180
 * 
 * 	选择排序
 * 	外层循环 控制比较的数A
 * 	内层循环 控制比较的数B
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		int [] nums = {-1,442,12,0,3,69,55,231,147,5};
		int count = 0;
		
		for(int i = 0;i < nums.length -1;i++) {
			int index = i; 
			
			for(int j = i + 1;j < nums.length;j++) {
				if(nums[index] < nums[j]) {
					index = j;
				}
			}
			if(index != i) {
				int temp = nums[i];
				nums[i] = nums[index];
				nums[index] = temp;
				count++;
			}
			System.out.println("第"+(i + 1)+"轮比较完数列的顺序:" +Arrays.toString(nums));
		}
		
		System.out.println(Arrays.toString(nums));
		System.out.println("一共交换了"+ count +"次位置");
		
		
	}
}

3.3 JDK排序

JDK提供的排序 Arrays.sort(数组名) 只支持升序

package com.qfedu.test4;

import java.util.Arrays;

/**
 * 	JDK提供的排序  Arrays.sort(数组名) 只支持升序
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		int [] nums = {-1,442,12,0,3,69,55,231,147,5};
		Arrays.sort(nums);
		System.out.println(Arrays.toString(nums));
	}
}

4. 二维数组

二维数组,数组中的元素 还是数组

package com.qfedu.test4;
/**
 * 	二维数组,数组中的元素 还是数组
 * @author WHD
 *
 */
public class Test2 {
	public static void main(String[] args) {
		int [] nums1 = {1,2,3,4,5};
		int [][] nums2 = {{1,2,3},{4,5},{6,7,8},{11,22,33,44,55}};
		
		System.out.println(nums2[0]);
		System.out.println(nums2[0][0]);
		System.out.println(nums2[0][1]);
		System.out.println(nums2[0][2]);
		System.out.println("-------------------------------------");
		System.out.println(nums2[1][0]);
		System.out.println(nums2[1][1]);
		System.out.println("-------------------------------------");
		System.out.println(nums2[2][0]);
		System.out.println(nums2[2][1]);
		System.out.println(nums2[2][2]);
	}
}
package com.qfedu.test4;

public class Test3 {
	public static void main(String[] args) {
		int [][] nums1 = new int[3][];
		
		nums1[0] = new int[5];
		nums1[0][0] = 11;
		nums1[0][1] = 12;
		nums1[0][2] = 13;
		nums1[0][3] = 14;
		nums1[0][4] = 15;
		
		
		nums1[1] = new int[3];
		nums1[1][0] = 11;
		nums1[1][1] = 22;
		nums1[1][2] = 33;
		
		
		nums1[2] = new int[2];
		nums1[2][0] = 55;
		nums1[2][1] = 66;
		
		for (int i = 0; i < nums1.length; i++) {
//			System.out.println(nums1[i]);
			for(int j =0;j < nums1[i].length;j++) {
				System.out.print(nums1[i][j] + "\t");
			}
			System.out.println("-----------------------------");
		}
		
		
		
		
	}
}

请雅清同学过目!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值