冒泡排序的思想就是通过相邻两个数据之间进行比较,将较大的数或者较小的数往后交换,每一轮冒泡选出最小或者最大的数交换到最后面并且不参与下一轮冒泡,这样通过不断的循环n-1(数据个数为n)轮冒泡,就完成了数据的有序排列。

首先我们假设有这样一个数组,里面存放着一些无序的数据:

int arr[] = { 2,5,6,45,8,65,42,20,9,54 };

首先通过sizeof求出数组长度除以一个数据单元所占长度,得到数组大小,如下:

int num = sizeof(arr) / sizeof(arr[0]);

通过冒泡排序的算法思想可以知道,我们需要两层循环,外循环控制每次冒泡次数,内循环进行比较相邻两个数据的大小和交换,代码实现如下(以升序为例):

void BubbleSort(int arr[], int num) {for (int i = 0; i < num - 1; i++) {int flag = 0;for (int j = 0 ; j < num - 1- i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;flag = 1;}}if (!flag) {break;}}
}

其中,flag的作用:我们知道,在冒泡的过程中,有可能经过几次的冒泡排序后,数组内数据就已经提前达到有序的状态,那么我们可以通过设置一个标志变量flag来判断是否在冒泡排序的过程中提前达到有序状态,如果是则可以提前结束循环,这样可以有效的提高咱们算法的效率。

完整代码如下:

#include<stdio.h>void BubbleSort(int arr[], int num);
void Show(int arr[], int num);int main() {int arr[] = { 2,5,6,45,8,65,42,20,9,54 };int num = sizeof(arr) / sizeof(arr[0]);printf("排序前:");Show(arr, num);BubbleSort(arr, num);printf("\n排序后:");Show(arr, num);return 0;
}void BubbleSort(int arr[], int num) {for (int i = 0; i < num - 1; i++) {int flag = 0;for (int j = 0; j < num - 1- i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;flag = 1;}}if (!flag) {break;}}
}void Show(int arr[], int num) {for (int i = 0; i < num; i++) {printf("%d ", arr[i]);}
}

效果展示:

C语言程序设计——冒泡排序相关推荐

  1. c语言程序设计冒泡排序在哪,C语言程序设计冒泡排序教学案例杨进

    <C语言程序设计冒泡排序教学案例杨进>由会员分享,可在线阅读,更多相关<C语言程序设计冒泡排序教学案例杨进(5页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计冒泡排序教学 ...

  2. 计算机c语言程序案例,计算机c语言程序设计冒泡排序教学案例 杨进.doc

    PAGE PAGE 3 C语言程序设计冒泡排序教学案例 永川职业教育中心 杨进 [案例背景] 排序是计算机学科中一项复杂而重要的技术,在各种软件中使用频率都很高,因此专家们研究了各种排序算法.在中职类 ...

  3. c语言排序程序ppt,冒泡排序 ---C语言程序设计.ppt

    冒泡排序 ---C语言程序设计.ppt 冒泡排序 ---C语言程序设计 主讲人:朱志慧 河南牧业经济学院微课比赛 算法思想 算法分析 程序实现 C语言程序设计----冒泡排序 拓展思考 算法思想 一. ...

  4. C语言程序设计习题参考答案

    C语言QQ群:108168489 此群是普通群,限100人.无法容纳所有C语言同学,敬请谅解. 申请加入务必注明[班级和姓名](不注明班级和姓名,拒绝加入),加入群后修改群名片.课程结束后[取消该群] ...

  5. 何钦铭c语言程序设计第八章,c语言程序设计(第3版)何钦铭-颜-晖-第8章--指针

    1.第8章 指针[练习8-1]如果有定义"int m, n = 5, *p = &m;"与m = n等价的语句是 B .A m = *p; B. *p = *&n; ...

  6. 自考c语言程序设计,自考“C语言程序设计”模拟试题八

    一.选择题 1.一个C语言程序是由(      )构成. A.语句            B.行号          C.数据         D.函数 2.下面标识符中正确的是(       ). ...

  7. c语言函数的程序设计,C语言程序设计第3版,第6章函数程序设计.ppt

    C语言程序设计第3版,第6章函数程序设计 C语言程序设计 第6章 函数程序设计 第6章 数组程序设计 6.1 函数概述 6.2 自定义函数示例 6.3 函数定义及调用 6.4 函数嵌套和递归函数 6. ...

  8. c语言 程序循环,C语言程序设计-循环例子

    <C语言程序设计-循环例子>由会员分享,可在线阅读,更多相关<C语言程序设计-循环例子(28页珍藏版)>请在人人文库网上搜索. 1.C 语言程序设计基础篇,第 7 章 简单程序 ...

  9. c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...

    河南理工大学计算机学院 <C语言程序设计>课程设计报告 题目: 学生信息管理系统 专业: 计算机科学与技术 班级: 计算机XX班 学号: 311009033232 姓名: ***** 日期 ...

最新文章

  1. vm15+ubuntu+hadoop3.2,新手小白血泪经验
  2. 从Javascript单线程谈Event Loop
  3. python发送邮件outlook_通过Python发送Outlook电子邮件?
  4. TensorFlow2-操作
  5. python之路--内置函数03
  6. 林斌首曝红米骁龙855旗舰新机:3200万像素弹出式前置摄像头
  7. java oracle 视图不存在_java – 获取异常ORA-00942:表或视图不存在 – 插入现有表时...
  8. Jzoj5231 序列问题
  9. linux静态网络带宽分配策略,Xen网络带宽分配优化方案的设计与实现
  10. web网页保存为PDF文件
  11. 中国互联网20年简史(1998-2018),告诉你本质是什么、规律是什么
  12. 崔荣容,英语如法入门1-50讲
  13. 怎样在线生成ICO 图标?图片怎么转ICO图标?
  14. 彼得林奇的成功投资 (修订版)
  15. Fast-paced Multiplayer
  16. java 数组声明并初始化_Java数组的声明与初始化
  17. 身体健康才是福报!41岁蚂蚁金服总裁助理毛军华因病去世
  18. u盘刻录光盘后空间缩小解决方法
  19. android:layout_gravity=quot;topquot;,android:layout_gravity和gravity的区别
  20. 二月,适合一个人去的旅行地

热门文章

  1. FJNU第二十二届低年级程序设计竞赛题解
  2. 网站搭建需要的工具有哪些
  3. RabbitMQ如何保证消息的可靠性
  4. 【论文】Tishby‘s talk about Information Bottleneck 翻译(一)
  5. JCL中utilities的使用
  6. php 开源图片管理系统,PicCMS 图片管理系统
  7. R语言使用sd函数计算向量数据的标准差
  8. 字符串的引用和初始化
  9. 解决同花顺导出Excel文件无法读取的问题xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record;
  10. 十进制与二进制相互转换(包括带小数点.各类进制转换公式)