数组相关及其主要思想回顾

有关数组

1.定义:

数组是一个变量,存储相同数据类型的一组数据。

2.格式:

数据类型 数组 名[ ] 或 数据类型[ ] 数组名 ;

3.特点 :

1.数据类型相同
2.数组名实际就是一个变量,既然是变量就必须先赋值再使用
3.数组的每一个元素既可以是基本数据类型也可以是引用数据类型

4.数组的初始化:

1.静态初始化

(1)初始化的同时为每个元素赋值,不需要指明长度
(2) int[ ] scores = {100,70,98,67}; //创建数组对象并初始化,存放4个成绩

2.动态初始化

(1.)初始化时由系统分配初始值,需要指明数组长度
(2.)int[] scores = new int[10];//创建数组对象,存放10个int数据,默认0

5.数组的相关思想

下面以一道编程题来总结其相关思路:

有一个数列:8,4,2,1,23,344,12

  • A 求数列中所有数值的和。
  • B 求出最大值。
  • C 将数组倒置并输出
  • D 数组查找 猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数。
  • E 数组排序

A: 数组内的和

	/*
	 * 功能:求数列中所有数值的和。
	 * 返回值类型: int
	 * 参数列表: int[] arr
	 * 方法名: getSum
	 */
	public static int getSum(int[] arr) {
		
		// 1.定义求和变量
		int sum = 0;
		
		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		
		return sum;
	}

B:数组最值

	/*
	 * 功能: 求出最大值。
	 * 返回值类型: int
	 * 参数列表: int[] arr
	 * 方法名: getMaxValue
	 */
	public static int getMaxValue(int[] arr) {
		// 1.假设第一个数为最大值
		int max = arr[0];
		
		// 2.遍历数组中的每一个元素
		for (int i = 0; i < arr.length; i++) {
			// 获取到每一个元素arr[i]
			// 3.判断获取的元素是否比max大
			if (arr[i] > max) {
				// 4.设置arr[i]为最大值
				max = arr[i];
			}
		}	
		return max;
	}
	
	/*
	 * 功能: 求出最小值。
	 * 返回值类型: int
	 * 参数列表: int[] arr
	 * 方法名: getMinValue
	 */
	public static int getMinValue(int[] arr) {
		// 1.假设第一个数为最大值
		int min = arr[0];
		
		// 2.遍历数组中的每一个元素
		for (int i = 0; i < arr.length; i++) {
			// 获取到每一个元素arr[i]
			// 3.判断获取的元素是否比max大
			if (arr[i] < min) {
				// 4.设置arr[i]为最大值
				min = arr[i];
			}
		}		
		return min;
	}

C:数组倒置

	/*
	 * 功能: 将数组倒置并输出
	 * 返回值类型: void	
	 * 参数列表: int[] arr
	 * 方法名: reverseArray
	 * 
	 * {8,4,2,1,23,344,12} --> {12,344,23,1,2,4,8}
	 * 第一交换
	 * 	第一个数和最后一个数交换位置
	 *  int temp = 0;
	 *  temp = arr[0];
	 *  arr[0] = arr[arr.length - 1 - 0];
	 *  arr[arr.length - 1 - 0] = temp;
	 *  
	 * 第二次交换
	 * 	第二个数和倒数第二个数交换位置
	 * 	int temp = 0;
	 *  temp = arr[1];
	 *  arr[1] = arr[arr.length - 1 - 1];
	 *  arr[arr.length - 1 - 1] = temp;
	 *  
	 * 第三次交换
	 * 	第三个数和倒数第三个数交换位置
	 * 	int temp = 0;
	 *  temp = arr[2];
	 *  arr[2] = arr[arr.length - 1 - 2];
	 *  arr[arr.length - 1 - 2] = temp;
	 *  
	 * 循环体代码:
	 * 	int temp = 0;
	 *  tmep = arr[i];
	 *  arr[i] = arr[arr.length - 1 - i];
	 *  arr[arr.length - 1 - i] = temp;
	 *  
	 * 循环的次数
	 * 7个数  --> 交换3次
	 * 6个数  --> 交换3次
	 * 5个数  --> 交换2次
	 * 4个数  --> 交换2次
	 * i个数  --> 交换i/2次
	 */
	public static void reverseArray(int[] arr) {
		
		for (int i = 0; i < arr.length / 2; i++) {
			int temp = 0;
			temp = arr[i];
			arr[i] = arr[arr.length - 1 - i];
			arr[arr.length - 1 - i] = temp;
		}		
	}

D:数组查找

	/*
	 * 数组查找:从键盘中任意输入一个数据,判断数列中是否包含此数。
	 * 返回值类型: boolean
	 * 参数列表: int[] arr, int num
	 * 方法名: isContainsNum
	 */
	public static boolean isContainsNum(int[] arr, int num) {
		// 默认概述在数组中不存在
		boolean flag = false;
		
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == num) {
				flag = true;
				break;
			}
		}
		
		return flag;
	}
	
	/*
	 * **数组查找**:从键盘中任意输入一个数据,判断数列中是否包含此数。
	 * 返回值类型: int
	 * 参数列表: int[] arr, int num
	 * 方法名: baiscSearch
	 */
	public static int baiscSearch(int[] arr, int num) {
		int index = -1;
		
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == num) {
				index = i;
				break;
			}
		}
		
		return index;
	}

E:排序

(1)冒泡排序法
	/*
	 * 功能: **冒泡排序法**
	 * 返回值类型: void
	 * 参数列表: int[] arr
	 * 方法名: bubbleSort
	 */
	public static void bubbleSort(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] > arr[j+1]) {
					int temp = 0;
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}				
			}
		}
	}		
}
(2)选择排序法
/*
	 * 功能: **选择排序法**
	 * 返回值类型: void
	 * 参数列表: int[] a
	 * 方法名: Raise
	 */
	 public static void Raise(int[] a) {
		for (int i = 0; i < a.length - 1; i++) {
			for (int j = i + 1; j < a.length; j++) {
				if (a[j] < a[i]) {
					int temp = 0;
					temp = a[j];
					a[j] = a[i];
					a[i] = temp;
				}
			}
		}
		System.out.println("排序后" + Arrays.toString(a));
	}
(3)快速排序法
	/*
	***快速排序法**
	 */
	 int[] arr = {1,2,8,90,42,43};
	 Arrays.sort(arr);
	 System.out.println(Arrays.toString(arr));

总结:

数组内可进行求和、求最值、数组内查找、数组排序(升序和降序)等方法思想。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值