用最优的算法求出一个int类型数组中的第二大值
2011-11-27 11:46
204 查看
public class array {
/**
* @param args
*/
public static void main(String[] args) {
int[] array={1,2,23,22,34,32,43,60,54,65};
/*int[] array={10,10,10,10,10,10,10,10,10,10,10};*/
int len=array.length;
int i, max, smax; //i:循环变量,max:数组中的最大值,smax:数组中的第二大值
max=array[0]; //数组中第一个元素赋值给max
smax=array[0]; //数组中第一个元素赋值给smax
for(i=0;i<len;i++ ){
if(array[i]>max){
//如果array[i]>max则改变smax和max的值
smax=max;
max=array[i];
}
else if(array[i]>smax && array[i]<max){
//如果array[i]值在smax和max之间则改变smax的值
smax=array[i];
}
}
if(smax==max){
System.out.print("这个数组中的元数都相同!");
}
else{
System.out.print("这个数组中的第二大数为:"+smax);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
int[] array={1,2,23,22,34,32,43,60,54,65};
/*int[] array={10,10,10,10,10,10,10,10,10,10,10};*/
int len=array.length;
int i, max, smax; //i:循环变量,max:数组中的最大值,smax:数组中的第二大值
max=array[0]; //数组中第一个元素赋值给max
smax=array[0]; //数组中第一个元素赋值给smax
for(i=0;i<len;i++ ){
if(array[i]>max){
//如果array[i]>max则改变smax和max的值
smax=max;
max=array[i];
}
else if(array[i]>smax && array[i]<max){
//如果array[i]值在smax和max之间则改变smax的值
smax=array[i];
}
}
if(smax==max){
System.out.print("这个数组中的元数都相同!");
}
else{
System.out.print("这个数组中的第二大数为:"+smax);
}
}
}
相关文章推荐
- String数组的输入转换成int类型后再进行排列之算法1
- 问题描述如下: 有2.5亿个整数(这2.5亿个整数存储在一个数组里面,至于数组是放在外存还是内存,没有进一步具体说明); 要求找出这2.5亿个数字里面,不重复的数字的个数; 另外,可用的内存限定为600M; 要求算法尽量高效,最优;
- 设计一个最优算法来查找n个元素数组中的最大值和最小值
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- 算法题27 在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。
- 每天学习一算法系列(31)(实现一个队列,队列的应用场景为:一个生产者线程将int 类型的数入列,一个消费者线程将int 类型的数出列)
- 数据结构——算法之(034)(编写一个函数求一个数组中的第二大数)
- c语言经典算法——查找一个整数数组中第二大数
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。自己写的算法
- 在一个元素个数为N的数组里,找到升序排在N/5位置的元素的最优算法时间复杂度是----阿里巴巴2015实习生笔试题
- 2.将两个Int类型数组连接为一个string类型数组
- 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
- 75 int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。[2行核心代码]
- 例题3-8 使用whle循环和折半法查找一个整数是否在一个排序的int类型数组中
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 算法1:一个无序的int数组,包含正负数, 排序成:左边为负数 右边为正数
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- 数组:将两个Int类型数组连接为一个string类型数组
- 阿里巴巴面试算法题:有一个函数int getNum(),每运行一次可以从一个数组V[N]里面取出一个数,N未知,当数取完的时候,函数返回NULL。现在要求写一个函数int get(),这个函数运行一次可以从V[N]里随机取出一个数,而这个数必须是符合1/N
- 编写程序STUDENT *Create(STUDENT studs[],int n)。STUDENT是一个结构类型,包含姓名、成绩和指针域。studs数组中存储了n个STUDENT记录。create函