写一个算法:有10000000种不同的整型数。发现其最大的100要素。实施时应执行速度的优化。
2条回答 默认 最新
- lasaka 2014-08-05 17:53关注
[code="java"]
import java.util.ArrayList;public class createDir {
private static int num[] =new int [10000000];
private static ArrayList ans=null;
public static void main(String[] arg){
for(int i = 0;i num[i]= i+1;
}
boolean boo=true;
int i = 0;
while (boo) {
int j = (int) (Math.random() * 10000000);
int k = num[i];
num[i] = num[j];
num[j] = k;
i++;
if(i==100000){
boo =false;
}
}
long start =System.currentTimeMillis();
ans = new ArrayList();
for(int j = 0;j if(j ans = sort(ans,num[j]);
}else{
if(num[j]>(Integer)ans.get(0)){
ans = getMaxValue(ans,num[j]);
}
}
}
long end =System.currentTimeMillis();
long total= (end-start);
System.out.println(total + " ms");
System.out.println(ans);
}
private static ArrayList getMaxValue(ArrayList ans,int num){
for(int i=1;i if(num ans.add(i,num);
ans.remove(0);
break;
}
if(i==ans.size()-1){
ans.add(num);
ans.remove(0);
break;
}
}
return ans;
}
private static ArrayList sort(ArrayList ans,int num){
if(ans.size()>0){
int min = (Integer) ans.get(0);
if(min>num){
ans.add(0, num);
}else if(ans.size()==1){
ans.add(num);
}else{
for(int i=1;i<ans.size();i++){
if(num < (Integer) ans.get(i)){
ans.add(i,num);
break;
}
if(i==ans.size()-1){
ans.add(num);
break;
}
}
}
}else{
ans.add(0, num);
}return ans; }
}
[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿