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

 题目描述冒泡排序算法是对已知的数列进行从小到大的递增排序每个实例输出两行,第一行输出第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.mzph.cn/news/186540.shtml

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

相关文章

RocketMQ源码剖析之createUniqID方法

目录 版本信息&#xff1a; 写在前面&#xff1a; 源码剖析&#xff1a; 总计&#xff1a; 版本信息&#xff1a; RocketMQ-5.1.3 源码地址&#xff1a;https://github.com/apache/rocketmq 写在前面&#xff1a; 首先&#xff0c;笔者先吐槽一下RocketMQ的官方&#xff0…

attention中Q,K,V的理解

第一种 1.首先定义三个线性变换矩阵&#xff0c;query&#xff0c;key&#xff0c;value&#xff1a; class BertSelfAttention(nn.Module):self.query nn.Linear(config.hidden_size, self.all_head_size) # 输入768&#xff0c; 输出768self.key nn.Linear(config.hidde…

上海线下活动 | LLM 时代的 AI 编译器实践与创新

今年 3 月份&#xff0c; 2023 Meet TVM 系列首次线下活动从上海出发&#xff0c;跨越多个城市&#xff0c;致力于为各地关注 AI 编译器的工程师提供一个学习、交流的平台。 12 月 16 日 2023 Meet TVM 年终聚会将重返上海&#xff0c;这一次我们不仅邀请了 4 位资深的 AI 编…

自动伸缩:解密HPA、VPA、CA和CPA智能调整应用大小和数量

关注【云原生百宝箱】公众号&#xff0c;快速掌握云原生 Kubernetes提供了多种自动伸缩机制&#xff0c;例如HPA&#xff08;Horizontal Pod Autoscaling&#xff09;&#xff0c;可以根据不同情况动态调整Pod副本数量。此功能使 Pod 能够有效地处理当前流量&#xff0c;而无需…

pytorch中的激活函数详解

1 激活函数介绍 1.1 什么是激活函数 激活函数是神经网络中引入的非线性函数&#xff0c;用于捕获数据中的复杂关系。它来自动物界的灵感&#xff0c;动物的神经元会接受来自对它有作用的其他神经元的信号&#xff0c;当然这些信号对该神经元的作用大小不同&#xff08;即具有不…

Jmeter+ant+jenkins实现持续集成看这一篇就搞定了!

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具&#xff0c;并配置好环境变量&#xff1b;参考&#xff1a;https://www.cnblogs.com/YouJeffrey/p/16029894.html jmeter默认保存的是.jtl格式的文件&#xff0c;要设置一下bin/jmeter.properties,文件内容…

如何提高3D建模技能?

无论是制作影视动画还是视频游戏&#xff0c;提高3D建模技能对于你的工作都至关重要的。那么如何能创建出精美的3D模型呢&#xff1f;本文给大家一些3D建模技能方面的建议。 3D建模通过专门的软件完成&#xff0c;涉及制作三维对象。这项技能在视频游戏开发、建筑、动画和产品…

【Java Web学习笔记】0 - 技术体系的说明

B/S软件开发架构简述 B/S架构 1.B/S框架&#xff0c;意思是前端(Browser浏览器)和服务器端( Server )组成的系统的框架结构。 2. B/S架构也可理解为web架构&#xff0c;包含前端、后端、数据库三大组成部分。 3.示意图 ●前端 前端开发技术工具包括三要素: HTML、CSS和Jav…

1-3、DOSBox环境搭建

语雀原文链接 文章目录 1、安装DOSBox2、Debug进入Debugrdeautq 1、安装DOSBox 官网下载下载地址&#xff1a;https://www.dosbox.com/download.php?main1此处直接下载这个附件&#xff08;内部有8086的DEBUG.EXE环境&#xff09;8086汇编工作环境.rar执行安装DOSBox0.74-wi…

解决CentOS下PHP system命令unoconv转PDF提示“Unable to connect or start own listener“

centos系统下&#xff0c;用php的system命令unoconv把word转pdf时提示Unable to connect or start own listene的解决办法 unoconv -o /foo/bar/public_html/upload/ -f pdf /foo/bar/public_html/upload/test.docx 2>&1 上面这个命令在shell 终端能执行成功&#xff0c…

基于GAN的多尺度门合并多模态MRI图像合成

Multi-Modal MRI Image Synthesis via GAN With Multi-Scale Gate Mergence 基于GAN的多尺度门合并多模态MRI图像合成背景贡献实验方法生成器gate mergence (GM) strategy&#xff08;门控融合策略&#xff09;判别器 损失函数Thinking 基于GAN的多尺度门合并多模态MRI图像合成…

深入了解接口测试:揭秘网络分层和数据处理!

网络分层和数据 上一小节中介绍了接口测试中一些必要重要的定义&#xff0c;这一节我们来讨论一下在学习接口测试过程中我们要关注的最重要的东西&#xff1a;网络分层和数据。 首先&#xff0c;我们来尝试理解一下&#xff0c;为什么网络是要分层的呢&#xff1f; 我们可以…

python文件读取

相对路径 读文件 打印txt文件 fopen(".\data.txt","r",encoding"utf-8") contentf.read() print(content) f.close()with open(".\data.txt","r",encoding"utf-8") as f:contentf.read()print(content)contentf…

Ilya Sutskever:师从Hinton,“驱逐”奥特曼,一个改变AI世界的天才科学

ChatGPT 已经在全球爆火&#xff0c;但大众在两周之前似乎更熟悉Sam Altman&#xff0c;而对另一位创始人 Ilya Sutskever 却了解不多。 直到前几天因为OpenA眼花缭乱的政权争夺大戏&#xff0c;OpenAI 的首席科学家Ilya Sutskever的名字逐渐被世人所知。 Ilya Sutskever在科…

STM32 CUBEIDE Outline is disabled due to scalability mode

项目场景&#xff1a; 问题描述 Outline is disabled due to scalability mode 看不到函数 解决方案&#xff1a;

继承中的析构函数的权限的深入了解

如果一个父类中的析构函数如果设置为 private 权限 &#xff0c;一个子类public继承了这个父类&#xff0c;那么 这个父类可以创建对象吗&#xff1f; 答案是 不可以 看看下面的代码 class A { public:private:~A() {} };class B :public A {A a; // 这个地方编译不报错&…

【CAN通信】CanIf模块详细介绍

目录 1.内容简介 2.CanIf详细设计 2.1 CanIf功能简介 2.2 一些关键概念 2.3依赖的上下层模块 2.4 功能详细设计 2.4.1 Hardware object handles 2.4.2 Static L-PDUs 2.4.3 Dynamic L-PDUs 2.4.4 Dynamic Transmit L-PDUs 2.4.5 Dynamic receive L-PDUs 2.4.6Physi…

PostGIS学习教程八:空间关系

PostGIS学习教程八&#xff1a;空间关系 到目前为止&#xff0c;我们只使用了测量&#xff08;ST_Area、ST_Length&#xff09;、序列化&#xff08;ST_GeomFromText&#xff09;或者反序列化&#xff08;ST_AsGML&#xff09;几何图形&#xff08;geometry&#xff09;的空间…

【MATLAB】异常数据识别

基于分位数的异常点识别 首先&#xff0c;给定了一个原始数据序列x。然后&#xff0c;计算了序列x的上四分位数和下四分位数&#xff0c;并根据这两个值计算了异常点的阈值。上四分位数减去1.5倍的四分位数范围得到异常值下界&#xff0c;下四分位数加上1.5倍的四分位数范围得…

运行新vue3项目

一&#xff0c;下载node并安装 官网&#xff1a;https://nodejs.org/en/ 查看版本&#xff1a; node -v二&#xff0c;cd进入到vue3项目目录 cd D:\Program-space\HBuilderXProject\Vue3project三&#xff0c;npm install npm install四&#xff0c;查看安装 npm list五&a…