首页 > 其他分享 >排序

排序

时间:2023-02-19 23:13:52浏览次数:27  
标签:交换 冒泡排序 小蓝 字符串 100 排序

排序

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。

在冒泡排序中,每次只能交换相邻的两个元素。

小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符, 则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。

例如,对于字符串 lan 排序,只需要 1 次交换。对于字符串 qiao 排序,总共需要 4 次交换。

小蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要 100 次交 换,可是他忘了吧这个字符串记下来,现在找不到了。

请帮助小蓝找一个只包含小写英文字母且没有字母重复出现的字符串,对 该串的字符排序,正好需要 100 次交换。如果可能找到多个,请告诉小蓝最短的那个。如果最短的仍然有多个,请告诉小蓝字典序最小的那个。

运行限制

最大运行时间:1s
最大运行内存: 128M

提交答案

#include <iostream>
using namespace std;
int main()
{
//考虑冒泡排序的复杂度,对于拥有N个字母的字符串,最多需要交换N*(N-1)/2次(完全乱序时)
//易知N=15时,有15*14/2=105,即满足100次交换所需的最短字符串有15个字母。
//要求字典序最小,那么显然要取a~o这15个字典序最小的字母
/*
  逆向思考,目标字符串经过100次交换后,得到正序字符串abcdefghijklmno,而完全逆序的字符串onmlkjihgfedcba变成正序字符串需要105次交换,那么将完全逆序的字符串交换5次后,便能得到答案。
  而要求字典序最小,那么将j交换5次提到字符串最前面,就得到了最小的情况
*/
  printf("jonmlkihgfedcba");
  return 0;
}

标签:交换,冒泡排序,小蓝,字符串,100,排序
From: https://www.cnblogs.com/bujidao1128/p/17135885.html

相关文章

  • 对Map排序
     一下代码为给一个hashMap的key排序,value排序一样处理 publicstaticList<Map.Entry<String,Integer>>sortHashMapInteger(HashMap<String,Integer>map,finalStrin......
  • 各大排序算法的优缺点以及实现方法
    这篇文章,我们来谈谈一些关于排序的东西注意!这篇文章在写的时候混淆了一个概念,“稳定”本义指的是能保证两个相等的数,经过排序之后,序列的前后位置顺序不变。在本文中理解成......
  • [django]drf入门004 过滤排序分页(转载)
    原文:https://pythondjango.cn/1.分页目录为什么要分页?DRF提供的分页类PageNumberPagination类LimitOffsetPagination类CursorPagination类函数类视图中使用分......
  • 外部排序【java实现】
    外部排序什么是外部排序?外部排序是一种把大量无序的数据,按一定的顺序排序的算法。它是一种非常适合处理海量数据的算法,其原理主要有以下几点:首先,将所有要排序的数据分......
  • 冒泡算法||| 选择排序
    冒泡算法#列表元素两辆比较,大的值逐渐向后移动#defsort(alist):#foriinrange(len(alist)-1):#ifalist[i]>alist[i+1]:#alist[i],a......
  • 11.限制和排序语句
    1.限制行使用--where子句--比较条件用=,<=,between,in,like和null--逻辑条件用and,or,not操作符--1.1限制行的查询使用where子句--1.2where自居放在from子句后......
  • C语言:四组字符排序
    #include<stdio.h>/*程序功能:从键盘输入4组字符,每组字符数量为3个,字符之间用空格隔开;编程将每组字符按ASCII码由小到大的顺序输出。例如:请输入第1组字符:qaz第1组......
  • gym102222I(冒泡排序的性质)
    神必结论:设原序列为\(a\),新序列为\(a'\)冒泡排序\(k\)轮,之后\(a'\)第\(i\)项是\(a\)前\(\min(i+k,n)\)项里未在\(a'\)的前\(i-1\)项里出现的最小值换句话说,按顺序确定\(a......
  • 算法刷题-字符串排序-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 二叉树||二叉树的遍历||排序二叉树||二分查找
    二叉树根节点叶子节点:左叶子节点右叶子节点树的层级树的高度二叉树的遍历广度优先遍历一层一层对节点进行遍历深度优先遍历前序:根......