冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的交换实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较……最后序列中最大的元素被交换到了序列的尾部,这样就完成了一轮交换,经过n轮交换之后,就可以得到一个有序序列。
/******************************************************************************
*
* file name : 冒泡排序
* author : Wzy
* data : 2025/12/12
* function : 给定一个数组,数组里面存有10个随机整数,然后利用冒泡排序实现整数序列的升序排列,使用数组实现
* note : None
*
* copyRight (c) 2025 17630246607@163.com All Right Reseverd
* ****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
/******************************************************************************
*
* func name : BubbleSort
* function : 实现冒泡排序
* argument :
* @arr[10]:待排序的整形数组
* @arrsize:数组中元素的个数
* retval : None
* author : Wzy
* date : 2025/12/12
* note : 冒泡排序:指的是元素两两之间进行比较交换,需要比较n轮,每轮需要比较m次,从左向右,升序
*
* ****************************************************************************/
#if 1
void BubbleSort(int arr[],int arrsize)
{
int temp = 0; //为了临时存储交换值
//1.循环比较元素,需要比较n轮
for (int n = 1; n < arrsize; ++n)
{
//2.每轮需要比较m次
for (int m = 0; m < arrsize - n; ++m)
{
//3.数组元素两两之间进行比较交换 arr[0]与arr[1]比较 arr[1]与arr[2]比较
if (arr[m] > arr[m + 1])
{
temp = arr[m];
arr[m] = arr[m+1];
arr[m+1] = temp;
}
}
}
}
#endif
int main(int argc, char const *argv[])
{
//定义一个整形数组存储10个整数
int arr[] = {14,23,12,5,8,3,9,10,33,6};
printf("排序前整数序列\n");
for (int i = 0; i <sizeof(arr)/sizeof(arr[0]); ++i)
{
printf("%d ",arr[i]);
}
printf("\n");
BubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
printf("排序后整数序列\n");
for (int i = 0; i <sizeof(arr)/sizeof(arr[0]); ++i)
{
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
测试结果
