冒泡排序:顾名思义就是向冒泡一样按照顺序进行依次比较排序,将每一个元素进行相互对比,然后再进行交换,形成一串有序的数据元素。今天对一个数组数据乱序元素进行整理并按照升序的顺序输出,算是小试一下,希望能举一反三。冒泡排序是最基础和最易理解的排序方式,是初学者最易掌握的排序方法,但冒泡排序也存在一定的劣势就是对比次数冗余,对于大规模的数据程序执行时间偏长,影响效率。
编写数组元素冒泡排序的注意点:编写函数时接收数组的参数接收的值仅为数组元素首地址,而非整个数组,所以计算数组元素个数只能在函数外;还有就是在函数内层循环中必须根据外层循环进行循环变换,这样才能保证每个数据的比较和交换
参考代码:
#include<stdio.h>
void bubble_sort(int arr[], int sz)//对数组元素用冒泡进行升序排序
{
int i = 0;
for (i = 0; i < sz - 1; i++)//确定冒泡排序的总趟数为总个数减一趟
{
{
int r = 0;//当r=0时假设数组元素结果已经有序
int j = 0;
for (j = 0; j < sz - 1 - i; j++)//确定每一趟要冒泡循环执行的次数和过程
{
if (arr[j] > arr[j + 1])//判断条件进行数据排序交换
{
int temp = 0;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
r = 1;//如果进行了数据交换就表明数组元素当前无序,把r赋值为1
}
}
if (r == 0)//当r经过内层循环之后仍为0时说明此时已经有序就终止排序循环
{
break;
}
}
}
int main()
{
int arr[] = { 2,3,6,5,8,1 };
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);//只能在函数外计算数组元素总个数
bubble_sort(arr, sz);
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);//遍历数组中每一个元素数据并输出
}
return 0;
}