蛮力算法c 语言例题代码思路
时间: 2023-10-04 21:13:44 浏览: 71
蛮力算法(Brute Force Algorithm)也被称为暴力搜索法,是一种基于穷举的简单算法。它通常用于在较小的数据集上寻找解决方案,或作为其他更高级算法的基础。
下面以求解两个有序数组的中位数为例,给出一个C语言的蛮力算法实现:
```c
#include <stdio.h>
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
int totalNums = nums1Size + nums2Size;
int medianIndex = totalNums / 2;
int i = 0, j = 0;
double median = 0;
for (int count = 0; count <= medianIndex; count++) {
if (i == nums1Size) {
median = nums2[j + medianIndex - count];
break;
}
else if (j == nums2Size) {
median = nums1[i + medianIndex - count];
break;
}
else if (nums1[i] < nums2[j]) {
median = nums1[i++];
}
else {
median = nums2[j++];
}
}
if (totalNums % 2 == 0) {
if (i == nums1Size) {
median += nums2[j - 1];
}
else if (j == nums2Size) {
median += nums1[i - 1];
}
else {
median += nums1[i - 1] < nums2[j - 1] ? nums2[j - 1] : nums1[i - 1];
}
median /= 2;
}
return median;
}
int main() {
int nums1[] = {1, 3};
int nums1Size = 2;
int nums2[] = {2};
int nums2Size = 1;
double median = findMedianSortedArrays(nums1, nums1Size, nums2, nums2Size);
printf("The median of two sorted arrays is: %f\n", median);
return 0;
}
```
此算法首先计算出两个数组的总长度,以此确定中位数的位置。然后通过循环比较两个数组中的元素,找到中位数所在的位置,最后根据总长度是否为偶数来计算中位数的值。
需要注意的是,在此例中,蛮力算法的时间复杂度为O(m+n),其中m和n分别为两个数组的长度。这种算法适用于数据量较小的场景,当数据量较大时,应该考虑使用更高效的算法。