找出整型数组A[n]中的最大值和次最大值,并分析算法的时间复杂度。
void FindFirstAndSecond(int A[],int n,int &maxFirst,int &maxSecond){ //将数组中前两个数的大者放入maxFirst,次大者放入maxSecond中 if(A[0] >; A[1]) { maxFirst = A[0];maxSecond = A[1]; }else { maxFirst = A[1];maxSecond = A[0]; } //从第3个元素开始依次取元素和当前最大和次最大的元素进行比较,直到所有元素都取完 for(i = 2; i <; n; i++) { //如果第i个元素比maxFirst大,则将maxFirst赋给maxSecond,将第i个元素赋给maxFirst if(A[i] >; maxFirst) { maxSecond = maxFirst; maxFirst = A[i]; }else if(A[i] >; maxSecod) { //如果第i个元素比maxFirst小,比maxSecond大,将第i个元素赋给maxSecond maxSecond = A[i]; } //如果第i个元素比maxFirst和maxSecond都小,直接取下一个元素 }}时间复杂度为O(n)。[/i][/i][/i][/i]
举一反三
内容
- 0
有一个a[3][4]整型二维数组,找出各行的最大值存到数组b[3]中。
- 1
求解找到数组A[1..n]中元素的最大值和次最大值(本小题以数组元素的比较为标准操作)的算法,并分析其最坏情况的时间复杂度
- 2
从一个二维数组 b[m][n] 中找出最大值元素的时间复杂度为
- 3
对数组a[m][n]来说,使用数组的某个元素时,行下标最大值是 ,列下标最大值是 。
- 4
试写一算法,求出n个数据中的最大值。写出最大语句频度,该算法的时间复杂度。