上机实验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);
}

  

posted @ 2019-12-11 12:29  Hqx_curiosity  阅读(2429)  评论(0编辑  收藏  举报