编程之美_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); }}
- 2楼adam_zs昨天 11:35
- [code=java]n // 4.max存储大数,min存储小数,然后数组两个分成一组,大的和max比较,小的和min比较,比较次数:1.5n次n static void find4(int[] arr)n {n int maximum = arr[0];// 最大值n int minimum = arr[0];// 最小值n for (int i = 0; i <= maxIndex - 1; i++)n {n // 比较相邻两个数大小n if (arr[i] > arr[i + 1])n {n // 比较大数n if (arr[i] > maximum)n {n maximum = arr[i];n }n }n elsen {n // 比较小数n if (arr[i] < minimum)n {n minimum = arr[i];n }n }n }n System.out.println("find4\t最小值:" + minimum + ",最大值:" + maximum);n }n[/code]
- 1楼adam_zs昨天 11:33
- [code=java]n修正:n // 数组的最大下标n static int maxIndex = arr.length - 1;n[/code]