首页 > 其他 > 详细

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

时间:2016-10-09 23:22:41      阅读:323      评论:0      收藏:0      [点我收藏+]

方法:

    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 + "毫秒");
}
}

结果:

    技术分享

    

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

原文:http://edwardlj.blog.51cto.com/12133317/1859935

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!