设数组a[n]中的元素均不相等,设计算法找出a[n]中一个既不是最大也不是最小 的元素,并说明最坏情况下的比较次数。 要求分别给出伪代码和C++描述
时间: 2024-06-04 18:13:15 浏览: 102
伪代码:
(1) 从数组a[1..n]的第1个元素开始,到第n个元素为止,找到其中最大值和最小值,并将它们分别存储在max和min变量中。
(2) 从数组a[1..n]的第1个元素开始,到第n个元素为止,找到一个既不是最大也不是最小的元素,并将它存储在mid变量中。
(3) 返回mid变量的值。
C 描述:
int findMid(int a[], int n) {
int max = a[0], min = a[0], mid, i;
for (i = 1; i < n; i++) {
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
for (i = 0; i < n; i++) {
if (a[i] != max && a[i] != min) {
mid = a[i];
break;
}
}
return mid;
}
最坏情况下的比较次数:
最坏情况下是需要遍历整个数组两次,因此比较次数为2n-2。
阅读全文