中位数是用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;

}

相关文章

发表新评论