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

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

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

相关文章

传统算法: Pygame 实现快速排序

使用 Pygame 模块实现了快速排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过快速排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序选择一个基准元素(pivot),将数组分成两部分,…

同旺科技 分布式数字温度传感器 -- OPC Servers测试

内附链接 1、数字温度传感器 主要特性有&#xff1a; ● 支持PT100 / PT1000 两种铂电阻&#xff1b; ● 支持 2线 / 3线 / 4线 制接线方式&#xff1b; ● 支持5V&#xff5e;17V DC电源供电&#xff1b; ● 支持电源反接保护&#xff1b; ● 支持通讯波特率1200bps、2…

Spring Security 6.x 系列(7)—— 源码分析之建造者模式

一、建造者模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者&#xff0c;把他们放到一起看看他们的共同特点&#xff1a; 查看AuthenticationManagerBuilder的继承结构图&#xff1a; 查看HttpSecurity的继承结构图&#xff1a; 查看WebSec…

DES加密技术概述与应用

一、引言 随着信息技术的飞速发展&#xff0c;数据安全已成为越来越受到重视的问题。数据加密技术作为保障信息安全的核心技术之一&#xff0c;得到了广泛的研究和应用。DES&#xff08;Data Encryption Standard&#xff09;作为一种对称加密算法&#xff0c;凭借其高效、可靠…

Loki安装部署

Loki安装部署 1、Loki介绍 Loki 是受 Prometheus 启发由 Grafana Labs 团队开源的水平可扩展&#xff0c;高度可用的多租户日志聚合系统。开发语 言: Google Go。它的设计具有很高的成本效益&#xff0c;并且易于操作。使用标签来作为索引&#xff0c;而不是对全文进行检索&…

C++基础 -22- 菱形继承

理想的菱形继承如图所示 #include "iostream"using namespace std;class top {public:void baseshow(){cout << "baseshow" << endl;} };class left:public::top {public:void leftshow(){cout << "leftshow" << end…

python回顾

一.如果访问远程电脑的mysql mysql -h 127.0.0.1 -P 3306 -uroot -p 1,设置用户的远程登录权限 查询: select user,host from mysql.user; 设置: update mysql.user set host% where userroot 2.关闭防火墙,或者开发3306端口 二,局域网内访问django项目 1,在settings.p…

微调Fine tune

网络架构 一个神经网络一般可以分为两块 特征抽取将原始像素变成容易线性分割的特征线性分类器来做分类 微调&#xff1a;使用之前已经训练好的特征抽取模块来直接使用到现有模型上&#xff0c;而对于线性分类器由于标号可能发生改变而不能直接使用 训练 是一个目标数据集上…

SpringBoot整合validation数据校验

1. 首先引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency> 点标识进去可以发现是通过Hibernate Validator使用 Java Bean Validation 2. 属性上…

二级分类菜单及三级分类菜单的层级结构返回

前言 在开发投诉分类功能模块时&#xff0c;遇到过这样一个业务场景&#xff1a;后端需要按层级结构返回二级分类菜单所需数据&#xff0c;换言之&#xff0c;将具有父子关系的List结果集数据转为树状结构数据来返回 二级分类菜单 前期准备 这里简单复刻下真实场景中 出现的…

Ubuntu22.04 使用Docker部署Neo4j出错 Exited(70)

项目场景&#xff1a; 最近需要使用Neo4j图数据库&#xff0c;因此打算使用docker部署 环境使用WSL Ubuntu22.04 问题描述 拉下最新Neo4j镜像&#xff0c;执行命令部署 启动容器脚本 docker run -d -p 7474:7474 -p 7687:7687 \ --name neo4j \ --env "NEO4J_AUTHneo…

Python语言学习笔记之七(JOSN应用)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 1、认识Json JSON (JavaScript Obiect Notation)是一种轻量级的数据交换格式&#xff0c;它是ECMAScript的一…