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

PTA基础编程题目集 7-30字符串的冒泡排序(C++语言实现)

摘要:本文是PTA编程题"字符串的冒泡排序"的题解,涵盖题目描述、输入输出格式及C++语言实现,展示基于strcmp比较字符串字典序进行冒泡排序K趟后输出中间结果的方法。

题目描述

我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。

输入格式:

输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。

输出格式:

输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。

输入样例:

6 2 best cat east a free day

输出样例:

best a cat day east free

解题思路

核心问题分析:将冒泡排序算法扩展到字符串序列,按字典序升序排列字符串,执行K趟排序后输出中间结果。关键点在于使用strcmp函数比较字符串字典序,使用strcpy函数交换字符串内容。

算法原理说明:使用二维字符数组存储N个字符串,外层循环控制K趟排序,内层循环逐对比较相邻字符串。strcmp(a,b)>0表示a的字典序大于b时需要交换位置。交换时通过临时字符数组和strcpy函数完成两个字符串的整体拷贝交换。第i趟排序后,末尾i个字符串已有序。

具体计算步骤

  1. 读入N(字符串数)和K(排序趟数)
  2. 逐行读入N个字符串存入二维数组strs
  3. 外层i从0到K-1执行K趟冒泡排序
  4. 第i趟内层j从0到n-2-i,用strcmp比较strs[j]和strs[j+1],若前者字典序大则用strcpy交换
  5. K趟排序后逐行输出数组中的所有字符串

代码部分实现

#include<iostream>#include<cstring>usingnamespacestd;intmain(){intn,k;cin>>n>>k;charstrs[100][11];for(inti=0;i<n;i++){cin>>strs[i];}for(inti=0;i<k;i++){for(intj=0;j<n-1-i;j++){if(strcmp(strs[j],strs[j+1])>0){chartemp[11];strcpy(temp,strs[j]);strcpy(strs[j],strs[j+1]);strcpy(strs[j+1],temp);}}}for(inti=0;i<n;i++){cout<<strs[i]<<endl;}return0;}

代码流程说明

  1. 输入数据:读入n和k,然后逐行读入n个字符串存入二维字符数组strs(每行最多10字符+结束符共11字节)
  2. K趟冒泡排序:外层i从0到k-1,共k趟;内层j从0到n-2-i,用strcmp比较相邻两个字符串字典序
  3. 字符串交换:若strcmp返回值>0表示前串大于后串需交换,通过临时数组temp配合strcpy完成两个字符串的内容拷贝交换
  4. 输出结果:遍历二维数组,每行输出一个字符串,即K趟排序后的中间结果

代码流程图

开始

读入字符串数n和趟数k

逐行读入n个字符串存入二维数组

i=0

趟数未达k?

j=0

内层循环未结束?

前串字典序大于后串?

复制交换两字符串内容

j加1

i加1

i=0

未遍历完所有字符串?

输出当前字符串并换行

i加1

结束

解题流程图

输入N个字符串和K值

第1趟冒泡排序开始

相邻字符串按字典序比较交换

趟数未达K?

执行下一趟排序末尾字符串渐有序

趟数加1

获得K趟后的中间字符串序列

逐行输出每个字符串

结束

http://www.jsqmd.com/news/1380072/

相关文章:

  • Java接入大模型的三层路径从API调用到智能体编排
  • Java 开源商城系统怎么选?先回答这 4 个问题,再去看代码
  • 中小企业必看:上海本地搜索引擎优化公司怎么选?2026甄选测评推荐 - 商业新知
  • 【8.22截稿提醒】CPNN 2026计算机感知与神经网络国际会议|深圳线下 EI/Scopus双检索
  • Android开发进阶:贝塞尔曲线原理、绘制与动画实战
  • 2026年荃净环保和希望树除醛效果哪家好?家用除醛选购实用指南 - 亚东说
  • FSearch:Linux文件搜索终极指南,让你的文件查找速度提升10倍
  • ARP静态绑定与解绑全攻略:从原理到实战,防御ARP欺骗攻击
  • 佛山家具购买渠道怎么选? - GrowthUME
  • 2026年安平市政护栏选购参考 中庭护栏核心信息及行业优质企业盘点 - 小范同学a
  • Linux双网卡配置与故障排查:从物理层到防火墙的完整指南
  • CSSO 1.3 Beta 4 更新详解:修复媒体查询与字体去重,优化前端构建CSS压缩
  • AI Agent开发中测试驱动开发(TDD)的实践指南:从交互契约到工程化落地
  • ArcGIS栅格计算器在水文分析中的应用:从水位数据到水力梯度与年际变化
  • Python FDTD仿真:3D电磁场计算的终极指南
  • 终极Real-ESRGAN图像超分辨率实战指南:如何让模糊图片瞬间变高清
  • Nginx服务器安全加固实战:从配置到防护的完整指南
  • 2026年秦皇岛东方皮肤医学门诊部-斑秃相关就诊 - 小范同学a
  • Windows HEIC 缩略图扩展:让 iPhone 照片在资源管理器中一目了然
  • Dify 高级实验(07):智能审批——如何让机器自动完成流程审批?
  • 营业执照翻译怎么办理?线上办理翻译的流程是什么,一文详解! - 指上通
  • 浙江靠谱合金钢镀镍厂家有哪些?2026靠谱厂家整理推荐 - 商业新知
  • ESP-SR语音识别框架终极指南:为嵌入式设备打造智能语音交互系统
  • 2026深圳员工宿舍租赁签约注意事项 合同避坑条款核对指南 - 滚动商讯
  • 【厦门工学院主办 | 厦门举办】第四届综合艺术与文化传播国际学术会议 (CACC 2026)
  • V5企业数智化中台的五层架构怎么落到企业实际
  • 2026 达州牛肉干行业参考,深挖宣汉牛肉干源头生产企业 - 市场沸点
  • 水壶密封胶厂家怎么挑?看懂这几点避坑又省心
  • 虚拟电厂核心术语表·进阶篇 2026.8
  • MISRA-C:2004嵌入式编码规范解析:从C语言陷阱到安全关键系统开发实践