数据结构与算法利用 VC ++6.0 编写一个程序,用户输入 10 个数字,找出其中最大的 2 个数字,并分析该算法的时间复杂度
时间: 2024-10-09 08:02:24 浏览: 37
数据结构与算法通常涉及设计和分析如何有效地存储和操作数据。在VC++6.0中编写一个程序,寻找一组数字中的最大两个数,我们可以使用简单的线性扫描或者优先队列等数据结构。
一种基本的线性扫描算法可以这样做:
```cpp
#include <iostream>
using namespace std;
void findTwoLargest(int arr[], int n) {
int max1 = arr[0], max2 = arr[0]; // 初始化最大值为第一个元素
for (int i = 1; i < n; i++) {
if (arr[i] > max1) {
max2 = max1;
max1 = arr[i];
} else if (arr[i] > max2 && arr[i] != max1) {
max2 = arr[i];
}
}
cout << "The two largest numbers are: " << max1 << " and " << max2 << endl;
}
int main() {
int arr[10];
cout << "Enter 10 numbers: ";
for (int i = 0; i < 10; i++)
cin >> arr[i];
findTwoLargest(arr, 10);
return 0;
}
```
这个算法的时间复杂度是O(n),因为我们需要遍历整个数组一次。对于每个元素,我们最多比较两次(检查是否超过max1或max2),所以它是一个线性的搜索。
阅读全文