冒泡排序指的是相邻两项两两相比,前一项如果比后一项大得话,就交换位置,然后依次与后面的数相比,直到遇到后一项比自己小。
代码如下
#include<stdio.h>
void px(int brr[],int m)
{
int i = 0;
for (i = 0; i < m-1; i++)//此次循环次数不会大于总个数,i从0开始所以要减1,有几个数就得循环几趟
{
int j = 0;
int find = 1;//设定如果有序就为1
for (j = 0; j < m - i - 1; j++)//此次循环是两两相比要几次,首先上一次循环要m-1次。其次每次对比都不会和上一个数进行对比交换位置,因此要减j,相当于已经排好序的数就不用去动它了
{
if (brr[j] > brr[j+1])
{
find = 0;//每交换一次就将find置为零
int tam = brr[j];
brr[j] = brr[j + 1];
brr[j + 1] = tam;//交换临时变量的语句
}
}
if (find == 1)
{
break;//如果后面的数字还没循环完就已经有序了就不用接下去执行没完成的循环了,简化了操作
}
}
}
int main()
{
int i = 0;
int arr[] = {3,1,7,5,8,9,0,2,4,6};
int ret = sizeof(arr) / sizeof(arr[0]);//计算出整个数组的大小
px(arr, ret);
for (i = 0; i < ret; i++)
{
printf("%d ", arr[i]);
}
}