数组元素排序之冒泡排序

       冒泡排序:顾名思义就是向冒泡一样按照顺序进行依次比较排序,将每一个元素进行相互对比,然后再进行交换,形成一串有序的数据元素。今天对一个数组数据乱序元素进行整理并按照升序的顺序输出,算是小试一下,希望能举一反三。冒泡排序是最基础和最易理解的排序方式,是初学者最易掌握的排序方法,但冒泡排序也存在一定的劣势就是对比次数冗余,对于大规模的数据程序执行时间偏长,影响效率。

      编写数组元素冒泡排序的注意点:编写函数时接收数组的参数接收的值仅为数组元素首地址,而非整个数组,所以计算数组元素个数只能在函数外;还有就是在函数内层循环中必须根据外层循环进行循环变换,这样才能保证每个数据的比较和交换

参考代码:

#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;

}



上一篇:ABC214 D - Sum of Maximum Weights(并查集+图论)


下一篇:编程题三:使用指针来打印数组内容