python逆序数怎么求 python 逆序数 您所在的位置:网站首页 序列的逆序数怎么求 python逆序数怎么求 python 逆序数

python逆序数怎么求 python 逆序数

2024-07-10 18:41| 来源: 网络整理| 查看: 265

基于python的线性代数关于逆序列计算

啥叫逆序列? 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。一个排列中所有逆序总数叫做这个排列的逆序数。

也就是说,对于n个不同的元素,先规定各元素之间有一个标准次序(例如n个 不同的自然数,可规定从小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同时,就说有1个逆序。一个排列中所有逆序总数叫做这个排列的逆序数。

举例: 求排列32514的逆序数是多少?

解题过程(对32514依次分析):

1、3后面比它小的数有2个。

2、2后面比它小的数有1个。

3、5 后面比它小的数有有2个。

4、1 后面比它小的数没有。

5、4 后面比它小的数没有。

最后将这些个数加起来就是2+1+2=5,所以逆序数是5。

记得导包

import numpy as np import random import sympy from sympy import *1、 基于python的生成随机逆序列def setReverNum(num=8, *args, **kwargs) -> str: """ 随机生成一串长度为num的逆序列(逆序列的每个数字都不一样) :param num: 逆序数列的最大值 :param args: :param kwargs: :return: 逆序序列 例如: # 测试获取逆序数 >>> test=setReverNum() #(生成一串逆序列) >>> test=setReverNum(9) #(生成一串9位的逆序列) >>> test=setReverNum(num=9) #(生成一串9位的逆序列) """ # 返回一个num位(默认8位)的不相同数 numlist = [str(i) for i in range(1, num + 1)] random.shuffle(numlist) # 随机打乱列表的顺序,不生成新的列表 rannum = "".join(numlist) # 将列表组合成str return rannum # 返回一个str的随机数2、基于python的随机计算逆序数def getReverNum(Num, *args, **kwargs) -> int: """ 传入一串逆序列,返回它的逆序列 :param Num: 传入一个逆序数列 :param args: :param kwargs: :return: 返回逆序数列的逆序数 例: >>> print("57426813的逆序数为",getReverNum('57426813')) >>> test=setReverNum() >>> print(test) >>> print(getReverNum(test)) >>> print(getReverNum('1537624')) """ Numlist = np.array(list(map(int, Num))) # 把列表里的str转换成int ReverNum = [np.sum(Numlist[:numKey] > numValue) for numKey, numValue in enumerate(Numlist)] # 利用enumerate通过循环迭代自动生成的索引变量。 return int(np.sum(ReverNum)) # 返回逆序数



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有