获取前N个最大值:
public static int[] getTopNMax(int[] array, int n) { // 数组长度小于N if (array.length < n) { return array; } // 用于存储前N个最大值的数组 int[] topN = new int[n]; // 给topN数组赋初值,即前N个元素 for (int i = 0; i < n; i++) { topN[i] = array[i]; } // 对topN数组排序,将最大值排到最前面 Arrays.sort(topN); // 从第N个元素开始与topN中的最小值比较 for (int i = n; i < array.length; i++) { if (array[i] > topN[0]) { // 如果大于最小值,则替换最小值 topN[0] = array[i]; // 再次排序 Arrays.sort(topN); } } return topN; }
获取前N个最小值:
public static int[] getTopNMin(int[] array, int n) { // 数组长度小于N if (array.length < n) { return array; } // 用于存储前N个最小值的数组 int[] topN = new int[n]; // 给topN数组赋初值,即前N个元素 for (int i = 0; i < n; i++) { topN[i] = array[i]; } // 对topN数组排序,将最小值排到最前面 Arrays.sort(topN); // 从第N个元素开始与topN中的最大值比较 for (int i = n; i < array.length; i++) { if (array[i] < topN[n - 1]) { // 如果小于最大值,则替换最大值 topN[n - 1] = array[i]; // 再次排序 Arrays.sort(topN); } } return topN; } 对于普通算法cpu够用,但如果用于图形计算,GPU更优,如有用到深度学习,图形计算的小伙伴,可以推荐一个成本低,几乎免费的云服务器做测试用,可以搜三丰云,其它的我也不多说了