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));
}
}
