冒泡排序数据结构实验报告

  • 实验目的:

  1. 理解冒泡排序算法的原理和基本思路。
  2. 熟悉冒泡排序在实际应用中的场景和优化方法。
  • 实验内容(实验题目与说明)

编写一个双向冒泡排序算法,即在排序过程中以交替的正、反两个方向进行遍历。若第一趟把关键字最大的记录放到最末尾,则第二趟把关键字最小的记录放到最前端,如此反复进行之。

三、算法设计(核心代码或全部代码)

#include <stdio.h>

#define max 10

void bubbleSort(int arr[], int size) {

    int i, j;

    for (i = 0; i < size - 1; i++) {  // 控制轮数

        for (j = 0; j < size - i - 1; j++) {  //控制每轮比较次数

            if (arr[j] > arr[j + 1]) {  // 如果前一个数大于后一个数,则交换它们的位置

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }

}

 

int main() {

    int arr[max], i;

 

    // 输入数组元素

    printf("输入 %d 个数: ", max);

    for (i = 0; i < max; i++) {

        scanf("%d", &arr[i]);

    }

 

    // 排序

    bubbleSort(arr, max);

 

    // 输出排序后的数组

    printf("排序后的结果: ");

    for (i = 0; i < max; i++) {

        printf("%d ", arr[i]);

    }

 

    return 0;

}

  • 运行与测试(测试数据和实验结果分析

b9e50ccb32d84ca394696f5647b56531.png

程序接收用户输入的10个整数,并将它们存储在数组 arr 中。然后,通过调用冒泡排序算法对这些整数进行排序。从数组的第一个元素开始,逐个比较相邻的两个元素的大小。如果前一个元素大于后一个元素,则交换它们的位置。通过这样的比较和交换操作,每一轮都会将当前最大的元素移动到数组的末尾。

  • 总结与心得:

冒泡排序是交换排序中一种简单的排序方法。其基本思想是对所有相邻的关键字值进行比效,如果是逆顺(a[j]>a[j+1]),则将其交换,最终达到排序的目的。双向冒泡排序算法是对传统冒泡排序算法的一种改进,通过同时从左到右和从右到左两个方向进行比较和交换,减少了排序的轮数。在开始编写代码之前,我首先对双向冒泡排序算法的原理进行了深入的学习和理解。这包括了如何确定左右边界、两个方向的比较和交换操作等。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年低压电工证模拟考试题库及低压电工理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年低压电工证模拟考试题库及低压电工理论考试试题是由安全生产模拟考试一点通提供&#xff0c;低压电工证模拟考试题库是根据低压电工最新版教材&#xff0c;低压电工大纲整理而成&#xff08;含2024年低压电工证…

7款实用的SQLite数据库可视化管理工具

前言 俗话说得好“工欲善其事&#xff0c;必先利其器”&#xff0c;合理的选择和使用可视化的管理工具可以降低技术入门和使用门槛。今天推荐7款实用的SQLite数据库可视化管理工具(GUI)&#xff0c;帮助大家更好的管理SQLite数据库。 什么是SQLite&#xff1f; SQLite是一个…

centos通过yum安装redis

1. 安装yum添加epel源(此步根据环境&#xff0c;如果有源则可跳过&#xff0c;在阿里去可跳过&#xff09; yum install epel-release 2 使用yum安装Redis yum install redis 出现如下图所示的内容 3 Redis配置 vim /etc/redis.conf :set number(显示行号) 61行&#x…

代码随想录-刷题第四十九天

121. 买卖股票的最佳时机 题目链接&#xff1a;121. 买卖股票的最佳时机 思路&#xff1a;动态规划五步曲 dp[i][0] 表示第i天持有股票所得最多现金&#xff0c;dp[i][1] 表示第i天不持有股票所得最多现金。 一开始现金是0&#xff0c;那么加入第i天买入股票&#xff0c;现金…

19道ElasticSearch面试题(很全)

1. elasticsearch的一些调优手段 1、设计阶段调优 &#xff08;1&#xff09;根据业务增量需求&#xff0c;采取基于日期模板创建索引&#xff0c;通过 roll over API 滚动索引&#xff1b; &#xff08;2&#xff09;使用别名进行索引管理&#xff1b; &#xff08;3&…

优雅的通过Shell脚本生成Go的程序包

概要 本文将介绍如何使用 Shell 脚本打包来优雅地生成Go的程序包。我们将创建一个简单的脚本&#xff0c;用于构建、测试和部署 Golang 项目。 前言 随着Go语言的普及&#xff0c;越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署&…

android 倒计时控件

效果&#xff1a;&#xff08;可不设置 之前、之后文字&#xff09; /*** 倒计时秒数** desc : 时分秒倒计时view* * 布局里引用后&#xff0c;* private fun testMethod(){* binding.test.setCDownStarText("之前的文字")* binding.test.setCDo…

听GPT 讲Rust源代码--compiler(28)

File: rust/compiler/rustc_codegen_llvm/src/llvm/mod.rs 文件rust/compiler/rustc_codegen_llvm/src/llvm/mod.rs是Rust编译器的LLVM代码生成模块的一个文件。该文件定义了一些用于与LLVM交互的结构体、枚举和常量。 此文件的主要作用是&#xff1a; 定义编译器和LLVM之间的接…

03. BI - 详解机器学习神器 XGBoost

本文专辑 : 茶桁的AI秘籍 - BI篇 原文链接: https://mp.weixin.qq.com/s/kLEg_VcxAACy8dH35kK3zg 文章目录 集成学习XGBoost Hi&#xff0c;你好。我是茶桁。 学习总是一个循序渐进的过程&#xff0c;之前两节课的内容中&#xff0c;咱们去了解了LR和SVM在实际项目中是如何使…

【附源码】Java计算机毕业设计-图书管理系统

【附源码】Java计算机毕业设计-图书管理系统 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX…

linux的常用命令

目录 开机关机 获取帮助的Linux Linux的辅助快捷键 目录操作命令 文件操作命令 文件内容操作命令 查找命令 打包 解压缩 Vi文本编辑模式 命令模式下的操作键 光标的移动 翻页 单词健的快速跳转 行内快速跳转 行间快速跳转 当前页跳转 行号显示 删除 复制 …

智慧城管解决方案:方案全文43页,附下载

关键词&#xff1a;智慧城管建设方案&#xff0c;智慧城管平台系统&#xff0c;数字城管指挥中心&#xff0c;数字城管系统 一、智慧城管建设背景 1、城市管理需求&#xff1a;随着城市化进程的加速&#xff0c;城市管理面临着越来越多的挑战&#xff0c;如交通拥堵、环境污染…

VLM,LLM等大模型如何应用于机器人控制(以强化学习为例)

VLM&#xff1a;视觉语义模型&#xff0c;准确识别图中有什么&#xff0c;处于什么状态&#xff0c;以及不同物体之间的关联。 LLM&#xff1a;语言大模型&#xff0c;可以针对当前的环境&#xff0c;自动生成可执行的任务&#xff0c;或者将人类指令重新分成可执行的子任务。…

【STM32】PWR电源控制

1 PWR简介 PWR&#xff08;Power Control&#xff09;电源控制 PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压监测器和低功耗模式的功能 可编程电压监测器&#xff08;PVD&#xff09;可以监控VDD电源电压&#xff0c;当VDD下降到PVD阀值以下或上升到P…

普中STM32-PZ6806L开发板(资料收集...)

简介 逐渐收集一些开发过程中使用到的文档资料数据手册 DS18B20 数据手册 DS18B20 Datasheet 开发文档 STM32F1各种文档 https://www.st.com/en/embedded-software/stm32cubef1.html#documentation HAL库文档开发文档 你使用的HAL文档, 在STM32CubeMX生成过程的最下面有…

路由器02_静态路由DHCP

一、静态路由 &#xff11;、静态路由特点 由管理员手工配置&#xff0c;是单向的&#xff0c;缺乏灵活性 &#xff12;、默认路由 默认路由是一种比较特殊静态路由&#xff0c;一般用于末节&#xff08;末梢&#xff09;网络&#xff0c;直接指定目标为任何地方 二、静态…

idea2023连接gitee远程仓库

目录 1.在gitee创建远程仓库 2.在Idea里配置git 3.初始化本地仓库 4. 提交推送至远程仓库 注意&#xff1a;提前下好git工具、idea2023&#xff0c;注册gitee账号&#xff0c;本文不介绍 1.在gitee创建远程仓库 创建好后&#xff0c;复制远程仓库地址 2.在Idea里配置git ​ …

解决SlF4J配置冲突警告:【SLF4J: Class path contains multiple SLF4J providers】

1、问题背景 最近在启动Springboot的时候出现了SLF4J相关的报红警告&#xff0c;虽然是不影响程序运行&#xff0c;但是作为一个有着代码洁癖的人看的是真难受。 警告信息如下&#xff1a; SLF4J: Class path contains multiple SLF4J providers. SLF4J: Found provider [ch…

用友U8+CRM 逻辑漏洞登录后台漏洞复现

0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件&#xff0c;旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 reservationcomplete.php文件存在逻辑漏洞&#xff0c;未授权的攻击者通过…

【Java技术专题】「攻破技术盲区」攻破Java技术盲点之unsafe类的使用指南(打破Java的安全管控— sun.misc.unsafe)

Java后门机制 — sun.misc.unsafe 打破Java的安全管控关于Unsafe的编程建议实例化Unsafe后门对象使用sun.misc.Unsafe创建实例单例模式处理实现浅克隆&#xff08;直接获取内存的方式&#xff09;直接使用copyMemory原理分析 密码安全使用Unsafe类—示例代码 运行时动态创建类超…