复杂度太高了 请你降低复杂度
时间: 2023-11-04 21:04:14 浏览: 84
++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cout << "请输入数据的个数:";
cin >> n;
int arr[n];
cout << "请输入这 " << n << " 个数据:确实,上面的代码在遍历每个整数时,还要遍历其二进制数中每个字符";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr,,时间复杂度较高。我们可以想办法优化。
我们可以考虑每次只找到最低位的 arr + n);
double median = 0.0;
if (n % 2 == 0) {
median = ( 0,然后将这个 0 变成 1,其他位的数不变。这样得到的新数double)(arr[n / 2 - 1] + arr[n / 2]) / 2;
} else {
median =一定比原数大,而且只有一位不同,这个新数一定满足恰好有一个 arr[n / 2];
}
cout << "它们的中位数是:" << median << endl;
return 00。因此,我们只需要计算最低位的 0 的位置,然后将这个位置的数变为;
}
```
16. 输入两个字符串,判断它们是否相等。
```c++
#include <iostream>
#include <string>
1,即可得到新数。这样就避免了遍历二进制数中的每个字符。
具using namespace std;
int main() {
string str1, str2;
cout << "请输入第一个字符串:";
cin >>体实现可以参考以下代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args str1;
cout << "请输入第二个字符串:";
cin >> str2;
if (str1 == str2)) {
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int count = {
cout << "它们相等" << endl;
} else {
cout << "它们不相等" << endl 0;
for (int i = a; i <= b; i++) {
if ((i & (i + 1));
}
return 0;
}
```
17. 输入一个字符串,判断它是否为数字。
```c++
#include <iostream == 0) {
count++;
}
}
System.out.println(count);
}
}
```
这个代码中,我们>
#include <string>
using namespace std;
int main() {
string str;
cout << "请输入一个字符串:";
cin使用位运算来判断最低位的 0 的位置。具体来说,我们将 i 和 i+1 进行 >> str;
int len = str.length();
bool flag = true;
for (int i = 0; i < len;按位与运算,如果结果为 0,说明最低位是 0,即 i 恰好有一个 0。
阅读全文