Python求解排列中的逆序数个数实例

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

一个排列中逆序的总数就称为这个排列的逆序数。

一个排列中所有逆序总数叫做这个排列的逆序数。

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

一个排列中所有逆序总数叫做这个排列的逆序数。

Python代码:

def inverse_number(string):
  'input a number which is string than,you will get the inverse number'
  ans = 0
  for i in range(len(string)):
    for j in range(i):
      if string[j] > string[i]:
        ans += 1
  return ans

print(inverse_number(input("Please input the number: ")))

补充知识:python输入一个整数,输出该数二进制表示中1的个数

我就废话不多说了,大家还是直接看代码吧!

# -*- coding:utf-8 -*-

class Solution:
  def NumberOf1(self, n):
    # write code here
    cnt = 0
    if n<0:
      n = n & 0xffffffff
    while n:
      cnt+=1
      n = (n-1) & n
    return cnt

通过按位与,巧妙的计算出二进制中"1"的个数。

以上这篇Python求解排列中的逆序数个数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python实现逆序输出一个数字的示例讲解

    问题是:输入一个数字,按照指定要求逆序输出该数字,很简单,下面是实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:逆序输出一个数字 如果数字是正数直接输出如:177--->771 如果数字是负数保留负号如:-945--->-549 如果数字以0结果逆序后需要去除0如:100--->1 如果数字很大会造成溢出返回0即可 ''' def inverse_num(one_num): ''' 逆序输出一个数字 '''

  • python逆序打印各位数字的方法

    如下所示: # -*- coding: utf-8 -*- # raw_input获取给定的一个不多于5位的正整数. # 一.求它是几位数: # 二.逆序打印出各位数字. def f(n): m = map(int, n) print "该数为%d位数"%len(m) m.reverse() for i in m: print i, if __name__=="__main__": n=raw_input("请输入一个多位数的正整数:") f(n

  • python中的逆序遍历实例

    如果你需要遍历数字序列,可以使用内置range()函数.它会生成数列. range()语法: range(start,end,step=1):顾头不顾尾 正序遍历: range(10):默认step=1,start=0,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9] range(1,10,2):指定start=1

  • Python求解排列中的逆序数个数实例

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序. 一个排列中逆序的总数就称为这个排列的逆序数. 一个排列中所有逆序总数叫做这个排列的逆序数. 也就是说,对于n个不同的元素,先规定各元素之间有一个标准次序(例如n个 不同的自然数,可规定从小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同时,就说有1个逆序. 一个排列中所有逆序总数叫做这个排列的逆序数. Python代码: def inverse_number(s

  • 利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定.假定没有外力时,两个弹簧的长度为L1和L2. 由于两物体有重力,那么在平面上形成摩擦力,那么摩擦系数分别为b1和b2.所以可以把微分方程写成这样: 这是一个二阶的微分方程,为了使用python来求解,需要把它转换为一阶微分方程

  • Python统计文件中去重后uuid个数的方法

    本文实例讲述了Python统计文件中去重后uuid个数的方法.分享给大家供大家参考.具体如下: 利用正则表达式按行获取日志文件中的的uuid,并且统计这些uuid的去重个数(去重利用set) import re pattern=re.compile(r'&uuid=.*&') uuidset=set() with open('request.log.2015-05-26','rt') as f: for line in f: all=pattern.findall(line) if len

  • Python 统计列表中重复元素的个数并返回其索引值的实现方法

    需求:统计列表list1中元素3的个数,并返回每个元素的索引 list1 = [3, 3, 8, 9, 2, 10, 6, 2, 8, 3, 4, 5, 5, 4, 1, 5, 9, 7, 10, 2] 在实际工程中,可能会遇到以上需求,统计元素个数使用list.count()方法即可,不做多余说明 返回每个元素的索引需要做一些转换,简单整理了几个实现方法 1 list.index()方法 list.index()方法返回列表中首个元素的索引,当有重复元素时,可以通过更改index()方法__s

  • python计算列表内各元素的个数实例

    如下所示: list = [1,2,3,4,5,6,7,5,4,3,2,12] set = set(list) dict = {} for item in set: dict.update({item:list.count(item)}) 以上这篇python计算列表内各元素的个数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python读取VOC中的xml目标框实例

    代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # get annotation object bndbox location import os import cv2 try: import xml.etree.cElementTree as ET #解析xml的c语言版的模块 except ImportError: import xml.etree.ElementTree as ET ##get object annotation bndbox l

  • python实现字符串中字符分类及个数统计

    输入一个字符串,分别统计出其中英文字母.空格.数字和其它字符的个数,本文给出解决方法 编写思路: 1.字符串的遍历,和列表类似,可以把字符串当做元素都是一个字符的一个字符列表,它可以和列表有公共的语法 2.分不同的类别,若有符合条件的字符直接在类别数上加1就可以 初始代码: # -*- coding:utf-8 -*- letter=0 number=0 space=0 symbol=0 print "请输入字符串:" s=raw_input() for char in s: if c

  • python求解数组中两个字符串的最小距离

    题目: 给定一个数组 strs,其中的数据都是字符串,给定两个字符串 str1,str2.如果这两个字符串都在 strs数组中,就返回它们之间的最小距离:如果其中任何一个不在里面,则返回 -1:如果两个字符串相等,则返回 0. 例如:给定['*','3','*','5','10','9','7','1','*'],再给定两个字符串'* '和'9',通过函数求得返回值 3. 分析:有两种方法 方法1: 遍历数组 strs,分别记录两个 str1 和 str2 的位置.求得最小的一个距离数字.这样做

  • python统计字符串中字母出现次数代码实例

    代码如下 dic=dict() d={} s=set() s='helloworld' (1)d=dict() for x in s: if x not in d.keys(): d[x]=1 else: d[x]=d[x]+1 print(d) (2)d2=dict() for x in s: d2[x]=d2.get(x,0)+1 print(d2) (3)d3=dict() for x in s: d3[x]=s.count(x) print(d3) 上面一共给出了三种方法,均是以字典的形

随机推荐