C语言————冒泡排序(例题2)

冒泡排序 的核心思想:两两相邻的元素进行比较将较大或最小的元素逐步"冒泡"到序列的末尾 ,一趟冒泡排序的目标是完成一次从头到尾的遍历,最终可将任意一组数据 排成升序 或着降序

我们以升序为例,先来理解一下冒泡的过程:

比如,给定一个元素个数为 10 的数组,我们来分析一下怎么个冒泡排序法:10个元素的话要比较9 轮,依次将最大的元素移动到最后面的位置上。每一轮相邻两个元素进行逐步比较,10个元素每轮逐级递减,比较 ( 10 - 1 - i ) 次。

cs 复制代码
#include <stdio.h>
//升序
void paixu(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;
			}
		}
	}
	for (int i = 0; i < sz; i++)
	{
		printf("%d ",arr[i]);
	}
}
int main()
{
	int arr[10] = { 9,3,5,4,1,7,2,6,8,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	paixu(arr,sz);
	return 0;
}

运行结果:

大家一定要理解冒泡排序这个过程,但是会遇到这么一种情况:如果一组数据中只有一个元素比较突兀,其他元素都是正常按照升序排列的,那么这个时候,只需要走一轮即可,但是该段代码并不会比较一轮后停下来。针对这种情况,我们只需要对代码进行稍作修改。

这时,只要我们设置一个变量就可以了。

看到这里,你是否对冒泡排序感到清晰明了了,赶快动手试一试吧。加油!!

这里小博送上自己喜欢的一句话给大家,"夏虫不可语冰,井蛙不可语海,曲士不可语道"。

相关推荐
Rabitebla16 小时前
【C++】string 类:原理、踩坑与对象语义
linux·c语言·数据结构·c++·算法·github·学习方法
小雅痞17 小时前
[Java][Leetcode middle] 167. 两数之和 II - 输入有序数组
java·算法·leetcode
CN-Dust17 小时前
【C++】输入cin例题专题
java·c++·算法
数模竞赛Paid answer18 小时前
2025年MathorCup数学建模A题汽车风阻预测解题文档与程序
算法·数学建模·mathorcup
宣宣猪的小花园.18 小时前
C语言重难点全解析:内存管理到位运算
c语言·开发语言·单片机
三品吉他手会点灯1 天前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
Old Uncle Tom1 天前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
会编程的土豆1 天前
洛谷题单入门1 顺序结构
数据结构·算法·golang
生信碱移1 天前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
智者知已应修善业1 天前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机