#include<stdio.h>
void bubble_sort(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, sz);
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
在学习这段代码之前,我们需要先了解一下什么是冒泡排序?
冒泡排序是一种排序算法,我们可以使用该算法,将一个无序的数组,整理成为我们所需要的、有序的数组(本段代码为升序)。这就像是可乐中的二氧化碳,生产过程中向糖水注入二氧化碳(定义一个无序数组),此时我们摇晃或者开瓶减压(使用冒泡排序),质量较轻的二氧化碳便会以气泡的形式跑出来。
而冒泡排序的核心思想便是:将两个相邻的元素进行比较。
该算法的原理为:第一步,先让第一、第二个元素进行比较,若第一个元素大于第二个元素,则两个元素进行交换;第二步,让第二、第三个元素进行比较......直至第N-1、第N个元素比较完成,此时,第N个元素应为该数组中的最大值;最后重复上述步骤(但需注意不必将已经完成“站位”的元素纳入比较中,减少不必要的比较),直至完成排序。若数组的元素个数为N个,则需冒泡排序N-1次。
(因为该段代码是以函数的形式来实现冒泡排序,所以在数组的传参过程中需要注意的是,数组传参是以首个元素地址即指针的形式传递,计算数组大小应放在主函数中。)
最后,希望你们,也希望自己越来越优秀......