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

冒泡排序法

编写程序实现冒泡排序。

相关知识
为了完成本关任务,要了解冒泡法排序的算法思想:
对所有相邻记录的关键字值进行比较,如果是逆序则将其交换,最终达到有序化,其处理过程为: 

将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。
对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上“飘浮”(左移),关键字值大的记录好像石块,向下“堕落”(右移)。 每经过一趟冒泡排序,都使无序区中关键字值最大的记录进入有序区,对于由 n 个记录组成的记录序列,最多经过 n-1 趟冒泡排序,就可以将这 n 个记录重新按关键字顺序排列。
以长度为 n=10 的序列 (8 7 6 5 9 3 4 0 2 1) 的冒泡排序过程做示范:
第一趟:在经过 9 次对所有相邻数据进行比较后,则数组中元素为 (7 6 5 8 3 4 0 2 1 9);
第二趟:在经过 8 次对所有相邻数据进行比较后,则数组中元素为 (6 5 7 3 4 0 2 1 8 9);
第三趟:在经过 7 次对所有相邻数据进行比较后,则数组中元素为 (5 6 3 4 0 2 1 7 8 9);
……

以此类推,共执行 9 趟操作,可将有 n=10 个元素的数组排成有序序列 (0 1 2 3 4 5 6 7 8 9)。

#include <stdio.h>
#include <stdlib.h>
#define N 100int main ()
{int n, i, j, t;int a[N]; // 声明一个长度为N的数组// 读取数组长度scanf("%d", &n);// 读取数组元素for(i = 0; i < n; i++) {scanf("%d", &a[i]);}// 进行冒泡排序,并输出每一次排序后的结果for(i = 0; i < n - 1; i++) {for(j = 0; j < n - i - 1; j++) {if(a[j] > a[j + 1]) {t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}// 输出每一次排序后的数组for(j = 0; j < n; j++) {printf("%d ", a[j]);}printf("\n");}return 0;
}

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

相关文章:

  • MATLAB 将fig格式另存为可编辑的eps格式,但乱码问题解决
  • Hadoop:单节点配置YARN
  • 【前端】Svelte:组件间通信
  • 数学建模-----假设性检验引入+三个经典应用场景(三种不同的假设性检验类型)
  • Unity——对RectTransform进行操作
  • 使用jmeter查询项目数据库信息,保存至本地txt或excel文件1108
  • ubuntu 22.04 server 安装 mysql 5.7.40 更改 datadir 目录 LTS
  • 网站架构知识之Ansible进阶2(day023)
  • Java 中的 Function:让转换逻辑更灵活
  • 10. java基础知识(下)
  • kafka 在Linux安上的装部署
  • kill-start系统进程的研究
  • 【系统架构设计师】2024年下半年真题论文: 论面向服务的架构设计(包括解题思路和参考素材)
  • 吴恩达深度学习笔记:序列模型(Sequence Models) 1.1-1.2
  • 【Spring】Spring Web MVC基础入门~(含大量例子)
  • 使用ThorUi
  • 【Promise】自定义promise
  • Docker容器部署Windows系统教程
  • js id数组转字符串
  • 如何在 Android 上增加 SELinux 权限
  • MySQL:数据类型建表
  • Linux:版本控制器git的简单使用+gdb/cgdb调试器的使用
  • 【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案
  • 力扣力扣力:91.解码方法
  • 一些面试题总结(二)
  • Hive-testbench套件使用文档
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:新技术融合的无限可能(下)(12/30)
  • Python | Leetcode Python题解之第540题有序数组中的单一元素
  • AHB Matrix 四星级 验证笔记(2.4) Tt3.3AHB总线协议测试时的 并行数据
  • 前端零基础学习Day-Eight