/*
冒泡排序法
原始数据: 1 2 3 4 5
第一轮
第一次 i=0 i i+1 交换
2 1 3 4 5
第二次 i=1 i i+1 交换
2 3 1 4 5
第三次 i=2 i i+1 交换
2 3 4 1 5
第四次 i=1 i i+1 交换
2 3 4 5 1
第二轮
第一次 i=0 i i+1 交换
2 1 3 4 5
第二次 i=1 i i+1 交换
2 3 1 4 5
第三次 i=2 i i+1 交换
2 3 4 1 5
第四次 i=1 i i+1 交换
3 4 5 2 1
需要轮数=元素个数-1
排序后:5 4 3 2 1
*/
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int arr[10];
int i,j;
printf("请输入10个数:\n");
for(i=0;i<10;i++) //接收用户的值
{
scanf("%d",&arr[i]);
}
//printf("排序前的数组是:arr[%d]=%d \n",i,arr[i]);
for(i=0;i<10;i++)
{
printf("排序前的数组是:arr[%d]=%d \n",i,arr[i]);
}
//printf("排序后的数组为:arr[%d]=%d \n",i,arr[i]);
score(arr,10);
for(i=0;i<10;i++)
{
printf("排序后的数组为:arr[%d]=%d \n",i,arr[i]);
}
return 0;
}
void score(int arr1[],int n)
{
int a,b;
for(a=0;a<n-1;a++)//n-1是因为不用与自己比较,所以比的数就少一个
for(b=0;b<n-1-a;b++)//n-1-a是因为每一趟就会少一个数比较
{
int temp;
if(arr1[b]>arr1[b+1])//这是升序排法,前一个数和后一个数比较,如果前数大则与后一个数换位置
{
temp=arr1[b];
arr1[b]=arr1[b+1];
arr1[b+1]=temp;
}
}
}
这里如果数组的数过于多的时候,我们可以用随机数来进行实现。
结果如图所示: