上机实验1--统计求最大、最小元素的平均比较次数
题目:
//上机实验题1--统计求最大最小元素的平均比较次数
/*随机产生10个1~20的随机整数,设计一个算法找其中最大元素和最小元素,并统计元素之间的比较次数*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXN 10
void randa(int a[],int n){
int i;
for(i=0;i<n;i++)
a[i] = rand()%20+1;
}
void MaxMin(int a[],int n,int &comp){
int i,max,min;
max = min =a[0];
comp=0;
for(i=1;i<n;i++){
comp++;
if(a[i]>max)
max = a[i];
else{
comp++;
if(a[i]<min){
min = a[i];
}
}
}
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf(" :最大值 = %d,最小值 = %d,比较次数 = %d",max,min,comp);
}
int main(){
int a[MAXN];
int m,count=0,comp,sumcomp;
srand((unsigned)time(NULL)); //
for(m=1;m<=10;m++)
{
printf("\n第%2d组:",++count);
randa(a,10);
MaxMin(a,10,comp);
sumcomp += comp;
}
printf("\n平均比较次数 = %g",1.0*sumcomp/10);
}
浙公网安备 33010602011771号