顺序统计之选择第i小的数

来源:互联网 发布:白人女友啪啪 知乎 编辑:程序博客网 时间:2024/06/08 14:14
package liner_sort;public class SelectTopK {public static int select(int A[],int p,int r,int i){if (p==r) {return A[p];}int q=partition(A, p, r);int k=q-p+1;if (i==k) {return A[q];}else if (i<k) {return select(A, p, q-1, i);}else {return select(A, q+1, r, i-k);}}public static int partition(int A[],int p,int r)//快速排序中的划分{int x=A[r];int i=p-1;int tmp=0;for (int j = p; j < r; j++) {if (A[j]<=x) {i=i+1;tmp=A[i];A[i]=A[j];A[j]=tmp;}}tmp=A[i+1];A[i+1]=A[r];A[r]=tmp;return i+1;}public static int[] randomArray(int n)//产生随机数组{int A[]=new int[n];for (int i = 0; i < n; i++) {A[i]=(int) (Math.random()*10000);}return A;}public static void main(String[] args) {int A[]=randomArray(5000);System.out.println(select(A, 0, A.length-1, 4999));}}

0 0
原创粉丝点击