写下来以记录自己学习过程中遇到的一些问题
1.利用随机函数产生10个20以内的整数存于数组中
(1) 按升序输出排序后的结果(排序可采用冒泡)
(2) 按降序输出排序后的结果(选择排序方法)
将问题分块:
- 10个随机数的生成
- 冒泡排序
- 选择排序
(1)对于第一个问题
可以使用stdlib.h 文件中的rand函数来实现
#include<stdio.h>
#include<stdlib>
#include<time.h>
main()
{
int a;
srand(time(NULL));
a=rand()%10;//输出10以内的数
a=10+rand()%90;//输出10-100之间的数
}
(2)冒泡排序算法
主要是通过相邻的数的比较,以达到排序的目的,写成函数形式如下
void bubblesort(int a[10])
{
int i,j,t;//t用于数字的交换
for(i=0;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
(3)选择排序算法
从前开始向后寻找最小的数与当前的数相交换
void sort(int a[10])
{
int i,j,imax,temp;
for(i=0;i<9;i++)
{
imax=i;
for(j=i+1;j<10;j++)
{
if(a[imax]<a[j])
{
imax=j;//imax始终是从i开始以后的最大数的下标
}
}
if(i!=imax)//若最后最大值不是当前i的数则进行换位
{
temp=a[i];
· a[i]=a[imax];
a[imax]=temp;
}
}
}
最后将其拼接
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void bubblesort(int a[10])
{
int i,j,t;//t用于数字的交换
for(i=0;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void sort(int a[10])
{
int i,j,imax,temp;
for(i=0;i<9;i++)
{ imax=i;
for(j=i+1;j<10;j++)
{
if(a[j]>a[imax])
{
imax=j;
}
}
if(imax!=i)
{
temp=a[i];
a[i]=a[imax];
a[imax]=temp;
}
}
}
main()
{
int a[10],i;
srand(time(NULL));
for(i=0;i<10;i++)
{
a[i]=rand()%20;
}
bubblesort(a);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
printf("降序排列后:\n");
sort(a);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181125103007502