package suanfasheji;
import java.util.Scanner;
import java.util.Random;
public class RandomizedSelect {
static Random ran=new Random();
public static void main(String[] args) {
RandomizedSelect t=new RandomizedSelect ();
int a[]=new int[10];
t.Geta(a);
t.printa(a);
Scanner s=new Scanner(System.in);
System.out.println("请选择第几小的数");
int x=s.nextInt();
System.out.println("第"+x+"小的数为:"+randomizedSelect(a,0,9,x));
}
public void Geta(int a[]) {//随机生成数组
for(int i=0;i<10;i++) {
a[i]=ran.nextInt(100);
}
}
public void printa(int a[]) {
System.out.println("输出的数组为:");
for(int i=0;i<10;i++) {
System.out.println(a[i]+" ");
}
}
public static int randomizedSelect(int a[],int p,int r,int k) {
if(p==r)return a[p];
int i=Randomizedpartition(a,p,r);
int j=i-p+1;
if(k<=
算法设计与分析--线性时间选择算法
最新推荐文章于 2023-01-28 16:32:35 发布