当前位置: 首页 > news >正文

C语言函数实现冒泡排序

         前言

        今天我们来看看怎么使用函数的方式实现冒泡排序吧,我们以一个数组为例arr[] = {9,8,7,6,5,4,3,2,1,0},我们将这个数组通过冒泡排序的方式让他变为升序吧。

        代码实现

        

#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;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;//输出for (i = 0;i < sz ;i++){printf("%d ", arr[i]);}return 0;
}

        代码解析

        我们从主函数开始吧,首先定义数组arr[] = {9,8,7,6,5,4,3,2,1,0},之后我们通过sizeof操作符来求数组中元素个数,之后我们定义函数bubble_sort来实现冒泡排序,大家这里注意喽,bubble_sort只是我们函数的名字,好了,这里我们进入函数中。

        我们定义函数的形参为数组,这里函数中的形参本质上是一个指针,数组名本质上是数组元素的首地址,当我们将数组元素个数的计算传入函数中时,在计算数组中元素个数的时候sz会为1,这样我们根本就不会进入循环中,程序出现错误,所以我们将sz的计算放置在主函数里,之后通过传参的方式将sz的值传入函数中。

        好了,我们知道数组中元素个数之后,我们就知道了在这个数组中我们需要对多少个数进行冒泡排序,一共进行几趟,之后我们从第一个数开始,与他相邻的数字比较,如果上一个数字比下一个数字大的话,我们将两个数字进行置换。直到我们第一次置换的数字找到它的位置,我们一次的冒泡排序就结束了。我们第二次就从第二个数字开始,这里我们进行一个数的冒泡排序时就需要逐渐递减到最后一个数字,所以我们这里循环使用j<sz-1-i,直到我们最后一个数完成冒泡排序,循环结束。

        置换图解

http://www.lryc.cn/news/333472.html

相关文章:

  • 区间概率预测python|QR-CNN-BiLSTM+KDE分位数-卷积-双向长短期记忆神经网络-时间序列区间概率预测+核密度估计
  • Java 分支结构 - if…else/switch
  • 【Unity每日一记】如何从0到1将特效图集制作成一个特效
  • 磁力链接的示例与解释
  • 云存储中常用的相同子策略的高效、安全的基于属性的访问控制的论文阅读
  • JVM高级篇之GC
  • 第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
  • java之static详细总结
  • RabbitMQ3.13.x之六_RabbitMQ使用场景
  • C++ 类和对象(初篇)
  • 微软推出GPT-4 Turbo优先使用权:Copilot for Microsoft 365商业用户享受无限制对话及增强图像生成能力
  • Spring Boot Actuator
  • 我与C++的爱恋:类与对象(一)
  • os模块篇(十八)
  • Oracle 数据库工作中常用知识点:sql语法与常用函数
  • 软件工程
  • 【御控物联】JavaScript JSON结构转换(17):数组To对象——键值互换属性重组
  • 免注册,ChatGPT可即时访问了!
  • 探索未来游戏:生成式人工智能AI如何重塑你的游戏世界?
  • ubuntu23设置kibana后台启动服务
  • 身份证实名制、C#身份核验代码示例、身份证查询
  • 【leetcode面试经典150题】15.分发糖果(C++)
  • Elasticsearch如何选择版本
  • P8749 [蓝桥杯 2021 省 B] 杨辉三角形
  • MySQL数据库——1.创建数据库
  • 计算机视觉研究院 | Drone-YOLO:一种有效的无人机图像目标检测
  • [C#]使用OpencvSharp去除面积较小的连通域
  • 联邦学习目前面临的挑战以及解决方案
  • Day60:WEB攻防-XMLXXE安全无回显方案OOB盲注DTD外部实体黑白盒挖掘
  • 解锁网络安全新境界:雷池WAF社区版让网站防护变得轻而易举!