首页 > 代码库 > 选择问题,自定义k=N/2为最大值!
选择问题,自定义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 + "毫秒"); } }
结果:
选择问题,自定义k=N/2为最大值!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。