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

【C语言蓝桥杯每日一题】——排序

【C语言蓝桥杯每日一题】—— 排序😎

  • 前言🙌
    • 排序🙌
  • 总结撒花💞

追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】——排序~这里利用了数组指针的方法知识, 都是精华内容,可不要错过哟!!!😍😍😍

排序🙌

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。在冒泡排序中,每次只能交换相邻的两个元素。小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符, 则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。
蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要 100 次交 换,可是他忘了吧这个字符串记下来,现在找不到了。请帮助小蓝找一个只包含小写英文字母且没有字母重复出现的字符串,对该串的字符排序,正好需要 100 次交换。如果可能找到多个,请告诉小蓝最短的那个。如果最短的仍然有多个,请告诉小蓝字典序最小的那个。

在这里插入图片描述

解题思路分析: 😍

  • 首先认真读题,然后分析.
  • 题目表明了这个排序是利用冒泡排序 的,因此我们需要寻找冒泡排序的比较次数规律。可以看到, 对有N个字母的字符串时 完全乱序时需要交换N*(N-1)/2次数如果需要100次的交换,即最少需要15个字母
  • 要求字典序最小 显然要取a-o这15个字典序最小的字母。
  • 逆向思考 字符串经过100次交换后 得到正序字符串 abcdefghijklmno。而完全乱序的字符串onmlkjihgfedcba变成正序字符串需要105次交换 。
  • 这里先举个栗子:例如 54321,最后变成12345,需要交换10次。如果把3放到前面,即35421 ,让他排成升序 12345需要交换8次。分析可以发现,比3大的数交换次数减少一次,3和比3小的数交换次数不变
  • 所以,将105次减少到100次,只需要将 j 先提前放到最前面就Ok了,因为比 j 大的有5个字母。这样就能将105次交换减少到100次交换,也就符合题目要求了
  • 注意: 这里数组需要开辟16个空间,因为还需要存放 \0。

解题源码分享: 😍

#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;int t = 0;char str [16] = "onmlkjihgfedcba";for (i = 4; i >= 0; i--){if (str[i] > str[i + 1]){t = str[i];str[i] = str[i + 1];str[i + 1] = t;}}printf("%s", str);return 0;
}

程序输出结果验证: 😊
在这里插入图片描述

总结撒花💞

   本篇文章旨在分享【C语言蓝桥杯每日一题】——排序。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

http://www.lryc.cn/news/42351.html

相关文章:

  • 学校官网的制作
  • 【云原生】k8s集群命令行工具kubectl之故障排除和调试命令
  • AJAX,Axios,JSON简单了解
  • 私域流量该如何打造?这套模式直接借鉴
  • 【jenkins部署】一文弄懂自动打包部署(前后台)
  • 应届生投腾讯,被面试官问了8个和 ThreadLocal 相关的问题。
  • Linux命令scp用法
  • 数据质量怎么监控
  • .NET Core 实现Excel的导入导出
  • 排好队,一个一个来:宫本武藏教你学队列(附各种队列源码)
  • C语言--动态内存管理1
  • HTTPS 的工作原理
  • 游戏开发中建议使用半兰伯特光照
  • JavaScript到底如何存储数据?
  • python实战应用讲解-【numpy专题篇】numpy应用案例(一)(附python示例代码)
  • 网络割接项目
  • SpringBoot整合数据可视化大屏使用
  • 蓝桥杯Web前端练习题-----水果拼盘
  • [攻城狮计划]如何优雅的在RA2E1上运行RT_Thread
  • 1.linux操作命令
  • STL--vector
  • Java每日一练(20230324)
  • 你掌握了吗?在PCB设计中,又快又准地放置元件
  • springboot学生综合测评系统
  • 【Unity3D】法线贴图和凹凸映射
  • 代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?
  • java多线程之线程安全(重点,难点)
  • 如何免费使用chatGPT4?无需注册!
  • Android Flutter在点击事件上添加动画效果
  • VSCode嵌入式开发环境搭建