#include<stdio.h>
#include<stdlib.h>
#include<time.h>//时间头文件
int main()
{
time_t ts;//设置时间变量
unsigned int randdata = time(&ts);//获取时间,转换为无符号int
srand(randdata);//设置随机数种子
int a[10];
//用随机数初始化数组
for(int i=0;i<10;i++)
{
a[i] = rand()%100;//0--99
printf("%d,%x\n",a[i],&a[i]);
}
printf("-----------------------------------------------------\n");
//下面的代码块是求最大值
{
int max;//最大值下标
max = 0;//假设a[0]最大
//求最大值
for(int i=1;i<10;i++)
{
printf("%d,%d,%d,%d\n",i,max,a[i],a[max]);
if(a[i]>a[max])
{
max = i;
}
}
printf("最大值a[max]=%d\n",a[max]);
}
//下面的代码块是选择排序
{
for(int i=0;i<9;i++)
{
int min = i;//假设是当前最小值的下标
for(int j=i+1;j<10;j++)
{
if(a[j]<a[min])
{
min = j;
}
}
if(min!=i)//下标相同表明下标没有交换,就无需交换数据
{
int temp = a[min];//temp保存最小值
a[min] = a[i];
a[i] = temp;//数据交换
}
}
printf("第一种选择排序后数组的结果如下:\n");
for(int i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}
{
for(int i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
printf("第二种选择排序后数组的结果如下:\n");
for(int i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}
{
int min,temp;
for(int i=0;i<9;i++)
{
min = i;
for(int j=i+1;j<10;j++)
{
if(a[j]<a[min])
{
min = j;
}
}
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
printf("第三种选择排序后数组的结果如下:\n");
for(int i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}
return 0;
}
随机数初始化数组然后用选择法(三种,细微的区别)对数组进行排序
最新推荐文章于 2023-01-15 17:06:54 发布