python算法设计 - 下一组排列
生活随笔
收集整理的這篇文章主要介紹了
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算法设计 - 下一组排列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SPV210_dwn刷机步骤
- 下一篇: python爬取交通违法记录_pytho