代码如下,通过两种方法计算中值:
/*
程序功能:求中值
作者:BugEyes
主页:http://bugeyes.blog.edu.cn
*/
#i nclude <stdlib.h>
int middle(int array[],int n)
{
int i,j;
int large=0,little=0;
for(i=0;i<n;i++)
{
if(i>0&&((array[i]>array[i-1]&&large<little)||(array[i]<array[i-1]&&little<large)||array[i]==array[i-1]))
continue;
large=little=0;
for(j=0;j<n;j++)
if(j!=i)
{
if(array[j]>=array[i])
large++;
if(array[j]<=array[i])
little++;
}
if(abs(large-little)<=3)
break;
}
return i;
}
void sort(int array[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-2;j++)
if(array[j]>array[j+1])
{
int t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
void output(int array[],int n)
{
int i;
for(i=0;i<n;i++)
{
if(i%20==0)
printf("\n");
printf("%4d",array[i]);
}
}
void main()
{
int i,pos;
int data[1001];
clrscr();
for(i=0;i<1001;i++)
data[i]=random(150);
pos=middle(data,1001);
printf("\nThe original data is:\n");
output(data,1001);
printf("\nThe middle value is:%4d.The position is:%4d",data[pos],pos);
sort(data,1001);
printf("\nThe sorted data is:\n");
output(data,1001);
printf("\nThe middle value from second method is:%4d",data[500]);
评论0