问题:有一个包括100 个数据元素的数组,每个数据元素的值都是实数,试编写一个求最大数据元素的值及其下标的算法,并分析算法的时间复杂度。
解题思路:
1.需要用到两个变量:max,用于存放最大值;index,用于存放最大值下标。
2.利用for循环遍历数组,将每一个数与max进行比较,若该数比max大,则将该数与max互换,即将max的值赋值为该数。直到遍历结束,输出最大值及其下标。
3.时间复杂度分析:该算法只用到了一个for循环,所以时间复杂度为O(n)
示例代码如下:
package c1_绪论.求最大值以及数据排序;
import java.util.Random;
/**
* @author Wei
* @create 2021/09/06 23:05
*/
public class 求最大值及下标 {
public static void main(String[] args) {
int array[] = new int[100];
Random random = new Random();
//利用Random类生成100个随机数
for(int i=0;i<array.length;i++){
array[i]=random.nextInt(100);
}
int max =0;
int index=0;
for (int i=0;i<array.length;i++){
if (array[i]>max){ //比max大的就赋值给它
max = array[i];
index = i;
}
}
System.out.println("最大值为:"+max+"\n最大值所在位置的下标为:"+index);
}
}