冒泡排序法是交换排序中的一种,是排序算法中最基本的,思路其实就是比较交换相邻间数据来达到排序的目的。
基本流程如下:
1.对数组中的各数据,从数组倒数第一个元素开始依次比较相邻的两个数据的大小
2.在比较两个数据的过程中,如果前面的数据比后面的数据大,便将前面的数据跟后面的数据进行交换,经过第一轮多次比较
便可以将最小的数据排在最前面。
3.依次用同样的方法对剩余的数据进行下一轮的比较,最后可以按照从小到大的顺序排好数组中的元素。
//随机生成数组并实现冒泡排序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define max 100
int shuzu[max]={'\0'};
void insert_max(int time1)
{
srand(time(NULL));
for(int i=0;i<time1;i++)
{
shuzu[i]=((rand()*3)/1000);
}
printf("数组:");
for(int time3=0;time3<time1;time3++)
{
printf("%d ",shuzu[time3]);
}
printf("\n");
}
void maopao(int *a,int time2)
{
int temp=0;
for(int i=0;i<time2-1;i++)
{
printf("第%d次排序:",i);
for(int j=time2-1;j>i;j--)
{
if(a[j-1]>a[j])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
for(int time3=0;time3<time2 ;time3++)
{
printf("%d ",shuzu[time3]);
}
printf("\n");
}
}
int main()
{
int gs;
printf("输入需要冒泡排序数据个数:");
scanf("%d",&gs);
insert_max(gs);
maopao(shuzu,gs);
return 0;
}