首页 > 其他分享 >PTA 7-30 字符串的冒泡排序

PTA 7-30 字符串的冒泡排序

时间:2024-08-16 20:24:11浏览次数:8  
标签:arr int 30 PTA ++ 冒泡排序 字符串 排序

7-30 字符串的冒泡排序(20分)

我们已经知道了将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

题解:

#include <stdio.h>
#include <string.h>

int main()
{
    int n = 0, k = 0; // k是排序趟数
    scanf("%d %d", &n, &k);
    char arr[101][11];
    // 输入
    for (int i = 0; i < n; i++)
    {
        scanf("%s", arr[i]);
    }
    // 冒泡排序
    for (int i = 0; i < k; i++) // 要排k趟
    {
        for (int j = 0; j < n - 1 - i; j++) // 遍历排序每一趟
        {
            /* 比较两字符的大小
             * 第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字
             * 第⼀个字符串等于第⼆个字符串,则返回0
             * 第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字
             * 这里是按ASCII码排序的 */
            if (strcmp(arr[j],arr[j+1]) > 0)
            {
                // 将arr[j]和arr[j+1]的位置互换
                char tmp[11];
                strcpy(tmp,arr[j]); 
                strcpy(arr[j],arr[j+1]);
                strcpy(arr[j+1],tmp);
            }
        }
    }
    // 打印
    for (int i = 0; i < n; i++)
    {
        printf("%s\n", arr[i]);
    }

    return 0;
}

标签:arr,int,30,PTA,++,冒泡排序,字符串,排序
From: https://blog.csdn.net/qq_50907107/article/details/141267638

相关文章

  • C语言学习 --- 冒泡排序与二分查找
    冒泡排序 排序        从小到大顺序排 轮数        数据个数-1 每一次比较的次数      数据个数-1-当前的轮数      每次比较开始从下标为0的地方开始比较     轮数:0~<数据个数-1次数:0~<数......
  • [Paper Reading] Single-to-Dual-View Adaptation for Egocentric 3D Hand Pose Estim
    名称Single-to-Dual-ViewAdaptationforEgocentric3DHandPoseEstimation时间:CVPR2024机构:TheUniversityofTokyoTL;DR多目3Dhandposeestimation数据比较难标注,作者核心思路是先训练单目模型,利用无监督的方法适配到双目场景,好处是a.无需标多目数据;b.可以适应任何......
  • 【萌新学习C语言】如何根据qsort库函数,写一个能给任何类型排序的冒泡排序。
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、sqort函数1.1qsort函数定义1.2qsort如何使用函数使用1.2.1用qsort函数,将结构体类型的name进行排序1.2.2用qsort函数,将结构体类型的age进行排序二、整数型的冒泡排序2.1冒泡排序思想三.......
  • 8.16 PTA练习
    7-1-11装箱问题假设有N项物品,大小分别为s1​、s2​、…、si​、…、sN​,其中si​为满足1≤si​≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品,顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,......
  • Springcloud大学生在线学习平台-计算机毕业设计源码43038
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1经济可行性2.1.2技术可行性2.1.3社会可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5......
  • (路由卷1)-30-Tunnel和多进程方案
    隧道r2:inttunnel0ipadd172.16.100.2255.255.255.0tunnelsouce23.1.1.2tunneldestianation23.1.1.3r3:inttunnel0ipadd172.16.100.3255.255.255.0tunnelsource23.1.1.3tunneldestination23.1.1.2r2:routerospf1net172.16.100.20.0.0.0area......
  • 云计算实训30——mysql主从复制同步、mysql5.7版本安装配置、python操作mysql数据库、
    一、mysql主从复制及同步1、mysql主从自动开机同步2、配置mysql5.7版本mysql-5.7.44-linux-glibc2.12-x86_64.tar启动服务、登录对数据库进行基本操作3、使用python操纵mysql数据库4、编辑python脚本自动化操纵mysql数据库二、mycat读写分离......
  • LeetCode530 二叉搜索树的最小绝对差
    前言题目:530.二叉搜索树的最小绝对差文档:代码随想录——二叉搜索树的最小绝对差编程语言:C++解题状态:成功解决!思路注意题目中的二叉搜索树,这个条件暗示每个节点的左子节点肯定小于该节点,右子节点肯定大于该节点。因此,使用中序遍历可以获得一个递增的有序数组,最......
  • 代码随想录day30 || 452 引爆气球,435 无重叠区间,763 划分字母区间
    452射爆气球funcfindMinArrowShots(points[][]int)int{ //思路,尝试按照startasc,endasc排序一下,取交集射爆 iflen(points)==1{ return1 } sort.Slice(points,func(i,jint)bool{ ifpoints[i][0]==points[j][0]{ returnpoints[i][1]<points......
  • Day30 贪心算法part4
    目录任务452.用最少数量的箭引爆气球思路435.无重叠区间思路763.划分字母区间思路任务452.用最少数量的箭引爆气球有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i]=[xstart,xend]表示水平直径在xstart和xend之间的......