给定一个字符串''onmlkjihgfedcba'
对它升序排序,我们知道这是完全逆序,交换次数(n-1)*n/2
n=15带入即可
我的疑惑在于,已知交换次数[0,(n-1)*n/2]
那么给定一个交换次数 字符串的排列顺序是唯一的吗
简单来说就是两者是不是一一对应的,如果是或不是,为什么呢?
请求指导
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
关于冒泡排序交换次数
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
关注
不是。
例如 omn 和 nom 交换次数都是 1,也就是说:对长度为 3 的字符串,已知交换次数为 1 时有 2 种可能的排序。
换个思路,甚至可以求出有多少种可能的排序:
对于一个有序的字符串,任意交换 1次有多少种结果? n-1
对于一个有序的字符串,任意交换 2次有多少种结果?
如果允许返回式交换,有 (n-1)(n-1) 种结果;如果不允许返回,有 (n-1)(n-2) 种结果。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 1无用举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2023-03-06 11:51回答 3 已采纳 加flag,主要是为了避免不必要的冒泡循环比较。其实这里 还少了 一段代码,如下: // 从后往前冒泡 void sort(int a[],int n) { int i,j,t,flag;
- 2021-09-07 13:02回答 1 已采纳 i<n,是不是写成1<n了
- 2022-08-06 17:41回答 2 已采纳 因为你input函数输入的是一个字符串。因为你输入的是1,2,3这样的,以,分割,那你可以以,进行拆分:a.split(',')你进行拆分后,会得到一个列表:['1','2','3']但是列表元素是字
- 2025-03-02 14:11冒泡排序是一种基础的排序算法,它的核心思想是通过重复遍历要排序的列表,比较相邻元素并根据需要交换它们的位置,使得每次遍历中最大的未排序元素“浮”到列表的末尾。冒泡排序的时间复杂度在最佳情况下为O(n),...
- 2021-10-11 15:22回答 2 已采纳 修改后如下:算法本身有一点问题,下面输出的时候循环内应为 printf("%d ", a[i]);而不是 printf("%d ", a[N]);,后者会直接造成数组越界并输出乱码有帮助望采纳~ #i
- 2021-12-04 06:46回答 1 已采纳 for循环里面只是交换了little和big的指针指向,但是数组的地址和值是没有发生变化的,所以最终以数组地址的方式输出是没有排序过的
- 2021-12-20 04:13回答 1 已采纳 冒泡排序是大的往后走,每轮如果出现交换,那就说明不是提前有序,相反有序。
- 2023-03-01 03:12回答 1 已采纳 如果有帮到你,请采纳一下~ import time import tkinter as tk from tkinter import messagebox class SortingAlgori
- 2022-08-25 12:13回答 1 已采纳 双层循环: for (int i = 0; i < numlist.Length-1; i++) { for (int j = 0; j
- 2022-10-08 06:53回答 1 已采纳 第一段14行错误 for (int k = 0; k < n - i - 1; ++k) {改为 for (int k = 0; k < n - j - 1; ++k) {这是你发上来
- 2024-12-30 03:43此外,还可以优化交换操作,减少不必要的交换次数,或采用鸡尾酒排序(双向冒泡排序)来提高排序速度。 尽管冒泡排序在效率上不及其他高级排序算法,但在某些特定场景下,它仍然具有应用价值。例如,在处理小规模...
- 2022-12-02 09:42在数据结构和算法的学习中,冒泡排序是一个基础的排序算法,它有助于理解排序的基本概念和交换操作。通过学习冒泡排序,我们可以更好地掌握排序算法的工作原理,并为学习更高效的排序算法如快速排序、归并排序等打下...
- 2022-07-11 07:04在实际编程实现冒泡排序时,通常使用两层嵌套循环,外层循环控制趟数,内层循环控制每趟中的比较和交换次数。例如,使用Java语言实现冒泡排序的代码如下: ```java void bubbleSort(int[] arr) { int n = arr....
- 2024-08-27 08:55冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这表示该数列已经排序完成。在...
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司