中位数是用C语言计算的。
你的意思是找到数组中的中间值?
先对数组进行排序(比如冒泡排序),然后找出中位数(中间一两个)。
如何用C语言写程序求一组数的中位数和众数 数组可以不用指针排序。您将数组定义为一个全局变量族,例如[10001];然后调用我给你的快速调度程序。这个程序可以记忆,非常有用。
空的
qs(int
l,int
r)
{
(同Internationalorganizations)国际组织
i=L,j=R,mid=a[(L R)/2],t;
while(ij)
{
while(一个中间)
我;
while(a[j]mid)
-j;
如果(i=j)
{
t = a[I];
a[I]= a[j];
a[j]= t;
我;
-j;
}
}
中频(红外)
qs(i,R);
中频(Lj)
qs(L,j);
}
排名后很容易找到中位数。
至于模式,我觉得最好的办法是用bfs。但是这个对你来说有点难,我给你写个哈希表。师仍然使用上面的数组,并假设数组A中的最大值不超过10000。如果超过了,可以只扩展下面的哈希数组的范围。
另外,假设A中有n个元素,A从1开始计数(如果从0开始,就改一下)。
(同Internationalorganizations)国际组织
hash[10001]= { 0 };
(同Internationalorganizations)国际组织
I,Max = 0;
for(I = 1;
I = n;
我)
{
hash[a[I]];
if(hash[a[i]]hash[Max])
max = a[I];
}
最后只输出Max。
T415422663刚才提醒了我。如果你要判断有多种模式,我可以稍微改动一下上面的程序。
(同Internationalorganizations)国际组织
hash[10001]= { 0 };
(同Internationalorganizations)国际组织
I,Max =-1;/*注意,我们在这里将Max赋值为-1的原因是为了防止当数组A中的元素个数为0时所有数据都被输出*/
for(I = 1;
I = n;
我)
{
hash[a[I]];
if(哈希[a[i]]Max])
max = hash[a[I]];
}
//10000是数组a中可能出现的最大值,这个可以自己改。
for(I = 1;
i = 10000
我)
if(hash[i]==Max)
printf("%d\n ",I);
c语言寻找中值的程序。 #包括彭羚stdio.h被摧毁的抵抗组织
void swap(int *p,int *q) {
int t;
t = * p;
* p = * q;
* q = t;
}
void sort(int a[],int n) {
int i,j,temp
for(I = 0;in-1;i ) {
for(j = 0;jn-I-1;j ) {
if(a[j]a[j 1])
swap(a[j],a[j 1]);
}
}
}
int main() {
int a[] = {6,3,8,5,1 };
int n = 5;
int sum,I;
sort(a,n);
n =(n ^ 1)/2-1;/fiber和spring/-1作为从0开始的cstarts中的数组索引
printf("Median = %d ",a[n]);
返回0;
}
c语言求中位数 # includestdio.h
#定义编号1001
Void冒泡排序(int * list,int len)//冒泡排序
{
int i,j;
内部温度;
for(I = 0;ilen-1;我)
for(j = 0;jlen-I-1;j)
{
if(list[j 1]list[j])
万亿
组渣温度= list[j 1];
list[j 1]= list[j];
list[j]= temp;
}
}
}
int main(){
int num
int tar[N];
scanf("%d ",数字);
而(num!= 0){
for(int I = 0;我改成了惠小水;i ){
scanf("%d ",tar[I]);
}
bubblesort(焦油,数字);
if(num % 2 == 0){
printf("%lg\n ",(tar[num/2]tar[num/2-1])/2.0);
}否则{
printf("%lg\n ",tar[num/2]* 1.0);
}
scanf("%d ",数字);
}
返回0;
}
最后更新于 2023-10-14 17:02:39 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章