冒泡排序算法是对已知的数列进行从小到大的递增排序。

news2024/9/23 13:18:00

 题目描述冒泡排序算法是对已知的数列进行从小到大的递增排序每个实例输出两行,第一行输出第1轮结果, 第二行输出最终结果
它的排序方法如下:
1.对数列从头开始扫描,比较两个相邻的元素,如果前者大于后者,则交换两者位置
2.重复步骤1,直到没有发生数据交换位置
例子:对数列33 22 55 11 44用冒泡排序
一开始比较33和22, 因为33大于22,所以交换得到22和33;接着比较33和55符合,不交换;接着比较55和11,不符合所以交换位置;接着比较55和44,不符合所以交换位置
第1轮结果: 22 331144 55.
以此类推
第2轮结果: 22 11 33 44 55
第3轮结果: 11 22 33 4455
第4轮没有发生交换,所以结束扫描
输入
第一行输入t,表示有t个测试实例
第二行先输入N表示有N个数据,接着输入N各数据,以空格分开
输出
每个实例输出两行,第一-行输出第1轮结果, 第二行输出最终结果

 一开始用

 int n;
        scanf("%d", &n); // 输入数据的个数

        int arr[n];
        for (int i = 0; i < n; i++) {
            scanf("%d", &arr[i]); // 输入数据
        }

一直提示数组不能使用常量

编译器提示严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E0028 表达式必须含有常量值 Project2

在 C 语言中,数组的大小必须是一个常量表达式,不能是变量。

要解决这个问题,你可以尝试使用编译器支持的数组大小方式,例如使用宏定义或者动态分配数组内存。另外,如果你需要在运行时确定数组的大小,可以考虑使用动态数组(Dynamic Array)或者其他数据结构来代替固定大小的数组。

根据你提供的代码,错误提示确实出现在第 51 行。问题在于你使用了变量 n 来定义数组 arr 的大小,而在 C 语言中,数组的大小必须是一个常量表达式。

要解决这个问题,你可以使用动态内存分配来创建一个大小可变的数组。可以使用 malloc 函数动态分配内存,并在使用完数组后使用 free 函数释放内存。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//malloc 函数的声明位于 <stdlib.h> 头文件中。如果你没有包含该头文件,编译器将无法识别 malloc 函数,从而导致错误。
//	冒泡排序算法 数列进行从小到大 递增排序。
//	 排序方法 
//  1.对数列从头开始扫描,比较两个相邻的元素, 如果前者大于后者, 则交换两者位置
//	2.重复步骤1, 直到没有发生数据交换位置
//	例子 : 对数列33 22 55 11 44用冒泡排序
//	一开始比较33和22, 因为33大于22, 所以交换得到22和33;接着比较33和55符合,不交换; 接着比较55和11, 不符合所以交换位置;接着比较55和44, 不符合所以交换位置
//	第1轮结果 : 22 33 11 44 55. 
//	第2轮结果 : 22 11 33 44 55
//	第3轮结果 : 11 22 33 44 55
//	第4轮没有发生交换, 所以结束扫描
//33 22 55 11 44
//22 33 11 44 55
//11 22 33 44 55 

void bubbleSort(int arr[], int n) {
    int i, j;
    int swapped; // 标记是否发生交换

    for (i = 0; i < n - 1; i++) {
        swapped = 0; // 初始化为未交换 
        // 从头开始扫描,比较相邻元素并交换
        for (j = 0; j < n - i - 1; j++) { 
            if (arr[j] > arr[j + 1]) {
                // 交换两个元素的位置
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = 1; // 标记发生交换
            }
            
        } 
         
        if (i == 0) {
            // 输出第一轮结果
            for (int i = 0; i < n-1; i++) {
                printf("%d ", arr[i]);
            }
            printf("%d\n", arr[n - 1]);
        }
        // 如果本轮未发生交换,说明已经有序,提前结束
        if (swapped == 0) {
            break;
        }
    }
}  
int main() {
    int t;
    scanf("%d", &t); // 输入测试实例的个数

    while (t--) { 
        int n=0;
        scanf("%d", &n); // 输入数据的个数 
        //int arr[n];
        int* arr = (int*)malloc(n * sizeof(int)); // 动态分配数组内存 
        for (int i = 0; i < n; i++) {
            scanf("%d", &arr[i]); // 输入数据33 22 55 11 44
        }

        bubbleSort(arr, n); // 使用冒泡排序算法对数组进行排序

       

        // 输出最终结果
        for (int i = 0; i < n-1; i++) {
            printf("%d ", arr[i]);
        }
        printf("%d\n", arr[n - 1]);
        free(arr); // 释放动态分配的数组空间
    }

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能优化算法应用:基于旗鱼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于旗鱼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于旗鱼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.旗鱼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

go学习之json和单元测试知识

文章目录 一、json以及序列化1.概述2.json应用场景图3.json数据格式说明4.json的序列化1&#xff09;介绍2&#xff09;应用案例 5.json的反序列化1&#xff09;介绍2&#xff09;应用案例 二、单元测试1.引子2.单元测试-基本介绍3.代码实现4.单元测试的细节说明5.单元测试的综…

希亦、追觅和添可洗地机哪个好?3款热门洗地机测评

洗地机因为自身的超强清洁效果&#xff0c;能大大的降低家务清洁工作&#xff0c;所以近年来以及越来越成为家庭的标配家电。 地机选起来让人眼花缭乱&#xff0c;对于消费者来说&#xff0c;如何选择一台实用性价比高的洗地机已经是一个头疼的问题&#xff0c;看着宣传画面很…

【玩转 EdgeOne】| 腾讯云下一代边缘加速CDN EdgeOne 是安全加速界的未来吗?

目录 前言边缘加速与安全加固边缘计算与CDN的融合EdgeOne优秀的安全特性EdgeOne卓越的性能表现灵活的配置和管理生态系统的支持与发展技术创新与未来展望EdgeOne试用结束语 前言 在当下互联网的迅猛发展的时刻&#xff0c;云计算和边缘计算技术的快速发展为网络加速领域带来了…

10-微信小程序 图片 相机 二维码 动画相关API(实现选择相册、拍照、录像、动画)

10-微信小程序 图片 相机 二维码 动画相关API(实现选择相册、拍照、录像、动画) 文章目录 10.1选择图片wx.chooseImage(Object object)object.success 回调函数代码效果 10.2 预览图片wx.previewImage(Object object)代码效果 10.3 相机APICameraContext wx.createCameraContex…

Python基础学习之包与模块详解

文章目录 前言什么是 Python 的包与模块包的身份证如何创建包创建包的小练习 包的导入 - import模块的导入 - from…import导入子包及子包函数的调用导入主包及主包的函数调用导入的包与子包模块之间过长如何优化 强大的第三方包什么是第三方包如何安装第三方包 总结关于Python…

互联网计算机 IC 生态发展大揭秘,DFINITY 官方扶持计划全公开!

DFINITY 团队致力于推动去中心化的互联网计算机&#xff08;IC&#xff09;生态发展&#xff0c;拥有来自斯坦福大学、耶鲁大学、Google 等多领域专家&#xff0c;旨在建立高性能、低成本、开发者友好的生态系统。全球首个官方 DFINITY 实战指南现已上线&#xff0c;将带领更多…

Python面向对象之成员相关知识总结

文章目录 前言一、成员1.1 变量1.2 方法1.3 属性 二、成员修饰符三、对象嵌套四、特殊成员关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面…

如何使用内网穿透实现无公网ip环境访问VScode远程开发

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

解决:ModuleNotFoundError: No module named ‘xlrd‘

解决&#xff1a;ModuleNotFoundError: No module named ‘xlrd’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named xlrd背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时&#xff0c;报错&#xff1a; pin_r…

智能优化算法应用:基于乌鸦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于乌鸦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于乌鸦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌鸦算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

算法:双指针

数组分块 题型特点&#xff1a;给一个数组&#xff0c;在某个规则下将数组划分成几个区间 解决&#xff1a;双指针&#xff08;数组中利用下标充当指针&#xff09; 283 移动0 定义两个指针 dest指针&#xff08;已处理区间内非0元素的最后一个位置&#xff09;cur指针&#…

Windows系列:windows server 2016 下域环境的搭建(完整版)

windows server 2016 下域环境的搭建&#xff08;完整版&#xff09; windows server 2016 下域环境的搭建在搭建之前简单介绍一下基础知识&#xff1a;一、环境介绍 &#xff1a;1.这里用拓扑图进行展示&#xff1a;2.所有环境配置如下 二、搭建主域&#xff1a;一. 创建主域1…

【DDD】领域驱动设计总结——如何构造领域模型

文章目录 一 分离领域二 领域对象分类2.1 实体(ENTITY)2.2 值对象(VALUE OBJECT)2.3 服务(SERVICE)2.4 模块&#xff08;&#xff2d;ODULE&#xff09; 三 管理领域对象的生命周期3.1 聚合&#xff08;AGGREGATE&#xff09;3.2 工厂&#xff08;FACTORY&#xff09;3.3 存储库…

再探Java集合系列—HashMap

前面我们已经针对LinkedList和ArrayList的底层原理进行了具体研究讨论&#xff0c;大家可以跳链接阅读哦~ 再探Java集合系列—ArrayList-CSDN博客 再探Java集合系列—LinkedList-CSDN博客 HashMap有哪些特征呢&#xff1f; value可以重复&#xff0c;key不能重复&#xff0c…

一个数据中心的PUE修养,必将迎来液冷存储的曙光

实现小于1.3的PUE硬指标&#xff0c;数据中心液冷存储将功不可没。 【全球存储观察 &#xff5c; 科技热点关注】 4000亿千瓦时&#xff0c;能耗如此惊人&#xff0c;这是预计到2030年全国数据中心的年耗电总量。 小于1.3&#xff0c;看似微不足道的数字&#xff0c;这是新建…

鸿蒙HarmonyOS应用开发-ColumnRow组件

1 概述 一个丰富的页面需要很多组件组成&#xff0c;那么&#xff0c;我们如何才能让这些组件有条不紊地在页面上布局呢&#xff1f;这就需要借助容器组件来实现。 容器组件是一种比较特殊的组件&#xff0c;它可以包含其他的组件&#xff0c;而且按照一定的规律布局&#xf…

原生GPT本地及云端部署方式保姆级教程

前提条件 部署必须要有一个超过1年的Github账号 本地服务部署 运行效果 部署方法 下载安装包 暂时无法在飞书文档外展示此内容 GitHub授权登录&#xff1a; https://dash.pandoranext.com/ 登录后是这个样子&#xff1a; 复制下面红框里面这个License Id 编辑Config.js…

基于SpringBoot母婴商城

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本母婴商城系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

Postman如何使用(四):接口测试

一.接口 1.程序内部接口&#xff1a;方法与方法之间&#xff0c;模块与模块之间的交互&#xff0c;程序内部抛出的接口&#xff0c;比如bbs系统&#xff0c;有登录模块&#xff0c;发帖模块等等&#xff0c;那你要发帖就必须先登录&#xff0c;那么这两个模块就得有交互&#…