问题:给定一个整型数组查找数组中的第n大元素。
解题思路:
1.先从给定数组array中取出前n个元素(例array[0]-array[n]),存入另一个长度为n的新数组subArray中。
2.对subArray数组中的n个元素进行从小到大排序。
3.从array数组中第n+1个元素开始考察其与b数组中第一个元素的大小,及时更新新数组中的元素,直到array数组中的所有元素都考察完毕。
4.返回subArray数组中的第一各元素subArray[0]为a数组中的第n大元素。
/** * 查找整型数组中第n大的元素 * @param array 输入的数组 * @param n 输出要查找第几大元素 * @return 找到的第n大元素 */ public static int findNumber(int[] array, int n){ int[] subArray = new int[n]; if (array.length > 0) { System.arraycopy(array, 0, subArray, 0, n); Arrays.sort(subArray); for (int i = n; i < array.length; i++) { if (array[i] > subArray[0]) { subArray[0] = array[i]; Arrays.sort(subArray); } } } return subArray[0]; }