随机产生10个整数;设计一个算法找其中的最大的元素和最小的元素,并统计元素之间的比较次数
选择排序法
#include <iostream>
#include <cstdlib>
using namespace std;
#define random(a,b) (rand()%(b-a)+a)//随机数
void Min_element(int a[],int length) //比较最小值算法
{
int num=0;
int min=0;
for(int i=0;i<length;i++)
{
min=i;
for(int j=min+1;j<length;j++)
{
if(a[min]<a[j])
{
min=j;
num++;
}
}
if(min!=i)
{swap(a[min],a[i]);}
}
cout<<"比较"<<num<<"次数的最小值是:"<<a[min]<<endl;
}
void Max_element(int a[],int length) //比较最大值算法
{
int num=0;
int max=0;
for(int i=0;i<length;i++)
{
max=i;
for(int j=max+1;j<length;j++)
{
if(a[max]>a[j])
{
max=j;
num++;
}
}
if(max!=i)
{swap(a[max],a[i]);}
}
cout<<"比较"<<num<<"次数的最大值是:"<<a[max]<<endl;
}
int main()
{
int a[10];
int n;//记录比较次数
for(int j=0;j<10;j++)
{
cout<<"第"<<j+1<<"次生成随机数:"<<endl;
for(int i=0;i<10;i++)
{
a[i]=random(0,10);
cout<<a[i]<<" ";
}
cout<<endl;
Min_element(a,10);
Max_element(a,10);
cout<<"-------------------------------------"<<endl;
}
return 0;
}
运行结果: