選擇問題,自定義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

    

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