编程之美_009寻找数组中的最大值和最小值
//寻找数组中的最大值和最小值public class Test{ // 需要查找的数组 static int[] arr = { 9, 5, 1, 8, 2, 3, 4, 6, 7 }; // 数组的长度 static int maxIndex = arr.length - 1; public static void main(String[] args) { // find1(arr); // find2(arr); // find3(arr); find4(arr); } // 1.排序数组,比较 n*n次 static void find1(int[] arr) { Arrays.sort(arr); System.out.println("find1\t最小值:" + arr[0] + ",最大值:" + arr[maxIndex]); } // 2.扫描一遍数组找出最大数,最小数,比较2n次 static void find2(int[] arr) { int maximum = arr[0];// 最大值 int minimum = arr[0];// 最小值 for (int i = 0; i <= maxIndex; i++) { if (minimum > arr[i]) { minimum = arr[i]; } if (maximum < arr[i]) { maximum = arr[i]; } } System.out.println("find2\t最小值:" + minimum + ",最大值:" + maximum); } // 3.数组挨着的两位分为一组,比较大小,小的在下标为偶数的位置,大的在下标为奇数的位置;然后从偶数位置查找最小值,从奇数位置查找最大值; // 比较1.5n次 static void find3(int[] arr) { int temp; for (int i = 0; i <= maxIndex - 1; i += 2) { if (arr[i] > arr[i + 1]) { temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } } System.out.println("两个一组排序后数组:" + Arrays.toString(arr)); int maximum = arr[0];// 最大值 int minimum = arr[0];// 最小值 for (int i = 0; i <= maxIndex - 1; i++) { // 偶数位搜索最小值 if (minimum > arr[i]) { minimum = arr[i]; } ++i; // 奇数位搜索最大值 if (maximum < arr[i]) { maximum = arr[i]; } } System.out.println("find3\t最小值:" + minimum + ",最大值:" + maximum); }}