Java求素组的最大值、最小值以及排序思路

package test;

import java.util.Arrays; /** *求数组的最大值、最小值以及排序思路 */ public class Test1 { public static void main(String[] args) {

int[] arr = { 20, 30, 100, 30, 90, 80, 50, 30, 50, 90 };
	
	// 定义一个变量存储最大值
	int max = arr[0];
	// 假设第一个元素是最大值,分别与所有元素挨个比较
	// 因为假设第一个元素是最大值,此时我们只需要从第二个数取出来和假设的最大值作比较就行
	// 所以遍历可以从第二个元素,也就是arr[1]开始
	for(int i = 1; i<arr.length; i++) {
		// 假如max小于后面的元素,那么将后面的元素赋值给max
		if(max < arr[i]) {
			max = arr[i];
		}
	}
	System.out.println("数组元素的最大值为:" + max);
	
	// 同理可以求出最小值,区别就是如果min大于后面的元素,那么将后面的元素赋值给min
	int min = arr[0];
	for(int i = 1; i<arr.length; i++) {
		if(min > arr[i]) {
			min = arr[i];
		}
	}
	System.out.println("数组元素的最小值为:" + min);
	
	
	// 根据求最大值和最小值得出一个排序的思路如下:

	System.out.println("降序排序前的结果:" + Arrays.toString(arr));

/*

for(int i = 0;i<arr.length -1;i++) {
		if (arr[i] < arr[i + 1]) {
			// 定义一个临时变量储存第一个元素,也就是arr[0]
			int temp;
			temp = arr[i];
			// 将前一个元素和后一个元素互换
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
	}
	// 执行完一次后输出结果
	System.out.println(Arrays.toString(arr));
	// 第一次循环结束之后最右边会变成最小值
	
	// 继续执行第二次判断
	for(int i = 0;i<arr.length -1;i++) {
		if (arr[i] < arr[i + 1]) {
			// 定义一个临时变量储存第一个元素,也就是arr[0]
			int temp;
			temp = arr[i];
			// 将前一个元素和后一个元素互换
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
	}
	// 执行完两次后输出结果
	System.out.println(Arrays.toString(arr));
	// 第二次循环结束之后最右边两个值会变成最小值
	
	// 继续执行第三次判断
	for(int i = 0;i<arr.length -1;i++) {
		if (arr[i] < arr[i + 1]) {
			// 定义一个临时变量储存第一个元素,也就是arr[0]
			int temp;
			temp = arr[i];
			// 将前一个元素和后一个元素互换
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
	}
	// 执行完三次后输出结果
	System.out.println(Arrays.toString(arr));
	// 第三次循环结束之后最右边三个值会变成最小值
	
	// 继续执行判断.......
	// 需要循环几次?
		// 如果是2个元素需要循环1次可以判断
		// 如果是3个元素需要循环2次可以判断
		// 如果是4个元素需要循环3次可以判断
		// 由此得出结论循环元素的个数-1次可以判断出结果也就是arr.length-1次

*/

// 为提高效率,每执行N此内层循环判断完毕之后因为最后N个数不用继续进行判断
	// 所以内层循环次数可以-N,这儿N = i,所以减去i就行,当然不减也可以
	// 降序排列
	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;
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	System.out.println("降序排序后的结果:" + Arrays.toString(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;
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	System.out.println("升序排序后的结果:" + Arrays.toString(arr));
}

}

经验分享 程序员 微信小程序 职场和发展