python算法设计 - 下一组排列
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm
版权声明:原创不易,本文禁止抄袭、转载,侵权必究!
目录
- 一、下一组排列
- 二、源码下载
- 三、作者Info
一、下一组排列
我们给定一个全序集,要找到当前结构的下一组排列,如:HIJT->HITJ->HJIT->HJTI……
尽管几乎每一个库里都提供了类似的功能,但若是想要提高算法速率的话,可以看看这个
这个算法本身是非常简单的:
- 从序列的末尾开始,找到递减的最长子序列(如:46975)且将它前面的项表示为一个支点(如:46975)
- 将此支点与找到的递减最长子序列中的次小项进行交换(如:47965)
- 将递减子序列转向(如:47569)
Python算法实现:
def permute(value):values = list(value)n = len(values)# i: 找到递减序列前的那一个支点for i in reversed(range(n - 1)):if values[i] < values[i + 1]:breakelse:# 否则逆转列表里的元素values[:] = reversed(values[:])return values# j: 要和i支点交换值的递减序列的次小项for j in reversed(range(i, n)):if values[i] < values[j]:# i支点和递减序列的次小项交换值,并且把交换后的递减序列逆转,也就是把i支点后的元素逆转values[i], values[j] = values[j], values[i]values[i + 1:] = reversed(values[i + 1:])breakprint(values)permute('HIJT')
输出结果:
二、源码下载
python算法设计源码下载:
- GitHub下载链接:传送门
- 原文链接:阅读原文
三、作者Info
作者:小鸿的摸鱼日常,Goal:让编程更有趣!
原创微信公众号:『小鸿星空科技』,专注于算法、爬虫,网站,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding!
版权说明:本文禁止抄袭、转载 ,侵权必究!
python算法设计 - 下一组排列相关推荐
- 全排列及相关扩展算法(二)——求字典序下一组排列及全排列算法
1.字典序排列的定义:为了便于理解,以数字为例,对于数字1.2.3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的.例如对于5个数字的排列 12354和12345,排 ...
- python算法设计 - 汉诺塔
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.汉诺塔 二.源码 ...
- python算法设计 - 二进制
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.二进制1的个数 ...
- python算法设计 - 埃拉托色尼筛选法
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.埃拉托色尼筛选法 ...
- Python 算法设计与分析 投资问题
Python 算法设计与分析 投资问题 投资问题 题目:设有m元钱,n项投资,函数fi(x)表示将x元投入第i项项目所产生的效益,i=1,2,3,-,n.问:如何分配这m元钱,使得投资的总效益最高? ...
- python算法设计 - 后缀表达式
python算法设计源码:https://github.com/MakerChen66/Python3Algorithm 版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.后缀表达式 二. ...
- python算法设计
算法是一个循序渐进的过程,它定义了一组指令,以一定的顺序执行以获得所需的输出.算法通常独立于底层语言,即算法可以以多种编程语言实现. 从数据结构的角度看,以下是一些重要的算法类型: * 搜索 ...
- 蓝桥杯之Python算法设计系列(一)
目录 蓝桥杯简介 什么是蓝桥杯? 大赛项目 一.个人赛软件类 二.个人赛电子类 三.青少年创意编程组 四.视觉设计大赛 Python程序设计 注意事项 Python程序语言设计-计算机二级 Pytho ...
- LeetCode 31. Next Permutation(下一组排列)
题目描述: Implement next permutation, which rearranges numbers into the lexicographically next greater p ...
最新文章
- 区块链和智能合约的关系
- QCon2016旧金山大会焦点分享者确认
- delphi设置鼠标图形
- 【MFC】工具栏按钮的热点效果
- redis 多线程_唬人的Redis多线程,也就那么回事
- python的email模块_python email 模块
- Qt总结之七:QPaintEvent绘制雷达图(二)
- CentOS6.5 调整 /home 挂载 分区大小
- IntelliJ IDEA下载 与 破解(Evaluate for free 灰色)
- HDU 5857 Median(水~)
- 华为鸿蒙os logo,华为鸿蒙 OS Logo :Powered by HarmonyOS
- Andriod+SpringBoot 图书馆管理系统
- 超市购物管理系统php,超市进销存管理系统PHP源码
- 计算机网络(五)—— 运输层(8):TCP的连接建立和连接释放
- RIP1实验1(实现不同路由器 不同PC机之间的通信)
- 利达主机联网接线端子_利达消防设备接线图
- 计算机丢失ac1st.dll怎么找回,处理CAD系统错误win10中丢失ac1st16.dll的恢复方法
- android 伪终端,伪终端pty的原理及使用
- linux运行checkra1n视频,CheckRa1n是什么软件?CheckRa1n使用方法
- 【网络通信】select、poll、epoll