选择问题,自定义k=N/2为最大值!

方法:

    k之前的先排序,最大值给k。

    之后的逐个比较,大于k直接覆盖,否则k不变。


代码

    
package com.Edward.suanfa;
import java.util.Random;
class getmax{
int getmax_(int a[],int k){//数组a[],k为指定最大值
int max=a[0];
int temp;
int len=a.length-1;
for(int i=0;i<=k;i++){
if(max>a[i]){
temp=a[i];
a[i]=max;
max=a[i];
}
}
for(;k<len;len--){
if(a[len]>a[k]){
a[k]=a[len];
}
}
return a[k];
}
}
public class k_max {
public static void main(String[] args) {
// TODO Auto-generated method stub
long begin = System.currentTimeMillis(); // 这段代码放在程序执行前
getmax a=new getmax();
int N=1000000;
int []b=new int[N];
for(int i=0;i<N;i++){
b[i]=(int) (Math.random()*1000);
}
int k=N/2;
System.out.println("在第"+k+"个位置上最大值为:"+a.getmax_(b, k));
long end = System.currentTimeMillis() - begin; // 这段代码放在程序执行后
System.out.println("耗时:" + end + "毫秒");
}
}

结果:

    wKiom1f6NTOQwEALAAAPlCQX5cA844.png-wh_50

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章