java – 在数组中找到k个最小整数
发布时间:2020-12-15 04:23:35 所属栏目:Java 来源:网络整理
导读:这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort. 非常感谢! 更新:我已经找到问题,这是主函数中的数组.在我改为下面的样子后, int[] arr = {2,3,1,7,5,6,2
这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort.
非常感谢! 更新:我已经找到问题,这是主函数中的数组.在我改为下面的样子后, int[] arr = {2,3,1,7,5,6,20,8,4,9}; 和 if(front>=end) return input; 它现在有效! import java.util.Arrays; import java.io.*; class quicksort{ public static void main(String[] args){ int[] arr = new int[9]; arr[0] = 7; arr[1] = 2; arr[2] = 4; arr[3] = 8; arr[4] = 3; arr[5] = 5; arr[6] = 1; arr[7] = 0; arr[8] = 10; System.out.println((Arrays.toString(findKSamllest(arr,8)))); } public static int partition(int[] input,int front,int end){ int pivot = input[front]; while(front < end){ while(input[front]<pivot) front++; while(input[end]>pivot) end--; swap(input,front,end); } return front; } public static void swap(int[] input,int s,int l){ int temp = input[s]; input[s] = input[l]; input[l] = temp; } public static int[] findK(int[] input,int end,int k){ if(front>=end) return null; int pivot = partition(input,end); //System.out.println(pivot); if(k==pivot){ return Arrays.copyOfRange(input,pivot); } else { if(k<pivot) return findK(input,pivot,k); return findK(input,pivot+1,end,k); } } public static int[] findKSamllest(int[] input,int k){ return findK(input,input.length-1,k); } } 解决方法
更改
if(front >= end) return null; 至 if(front > end) return null; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |