问题遇到的现象和发生背景
设计算法找出数组a[n]中相差最小的两个元素,并说明最坏情况下的比较次数,其中n个元素用随机函数生成,范围在1-1000以内。至少设计两种算法解决该问题,并通过对基本语句计数法对两种算法的时间复杂度进行比较
问题相关代码,请勿粘贴截图
辅助资料:
1.//随机函数的使用
#include
using namespace std;.
#include<time.h>
main()
{
int i,j;
srand((int)time(0));//产生随机数种子
for(i=0;i<10;i++)
{
j=rand()%100+1;//生成1-100以内的随机数
cout<<j<<" ";
}
cout<<endl;
}
2.//基本语句的统计方法
void main()
{
int a[10]; //定义一个数组即它的元素为10
int i,j,temp; //定义3个变量
int sum=0; //基本语句计数器
printf("输入10个整数:\n\a");
for(i=0;i<10;i++)
scanf("%d",&a[i]); //依次输入10个整数
for(i=0;i<9;i++) //进行9轮排序
{
for(j=0;j<9-i;j++) //每轮进行9-i次交换{
sum++;开始计数
if(a[j]>a[j+1])//基本语句
{
temp=a[j];
a[j]=a[j+1]; //大的沉底,小的上浮
a[j+1]=temp;
}
}
}
Printf(“%d基本语句的执行次数为:\n”,sum);//输出计数结果
printf("排序结果:");
for(i=0;i<10;i++) //依次输出排序结果
printf("%d\t ",a[i]);
}
我想要达到的结果
有必要的注释,结合给的代码,完成程序