从题目上看,用int类型数据就够了,没必要考虑long这些~~
在题目中,直接用了Collection工具类中的sort方法,是从小到大排序,据了解,Java自带的排序算法应该是优化过的快速排序,算法可靠。
package 区间k大数查询; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args){ int n,m,l,r,k; Scanner sc = new Scanner(System.in); n = sc.nextInt(); int a[] = new int[n]; for (int i=0;i<n;i++){ a[i] = sc.nextInt(); } m = sc.nextInt(); for (int i=0;i<m;i++){ l = sc.nextInt(); r = sc.nextInt(); k = sc.nextInt(); ArrayList<Integer> list = new ArrayList<Integer>(); for (int j=l-1;j<r;j++){ list.add(a[j]); //System.out.println("add:"+a[j]); } Collections.sort(list); // for (int mm=0;mm<list.size();mm++){ // System.out.println("list "+mm+"="+list.get(mm)); // } // System.out.println("final:"+list.get(list.size()-k)); System.out.println(list.get(list.size()-k)); } } }