C++中位数搜索算法实现(含完整源码)
中位数是指一组数据按照从小到大排序后,居于中间位置的数值,如果该组数据的个数为奇数,则中位数就是中间那个数,如果该组数据的个数为偶数,则中位数就是中间两个数的平均值。在统计学中,中位数经常被用来表示一组数据的中心位置,具有较好的稳定性和代表性。
以下是C++中的中位数搜索算法实现,它的时间复杂度为O(N),效率较高。
#include<iostream>
#include<algorithm>
using namespace std;
int a[1005];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n); //排序
if(n%2==0) //偶数个数的情况
cout<<(a[n/2-1]+a[n/2])/2<<endl;
else //奇数个数的情况
cout<<a[n/2]<<endl;
return 0;
}
输入数据首先需要给出数列中数据的个数N(1 ≤ N ≤ 1000),接下来是N个正整数,每个整数的取值范围是[0,10^9]。
在程序中,我们使用了STL中的sort()函数来对输入数据进行排序,然后根据数据个数的奇偶性来计算中位数。
以上便是C++中位数搜索算法的实现过程,希望能对读者们有所帮助。