【python】数组的序列变换?

作者: 阿牛02 | 来源:发表于2019-07-26 08:29 被阅读0次

题目:给定数组A = {1, 2, 3, 4, 5, 6},并给定一个变换序列P = {3, 1, 5, 4, 0, 2},将变换序列应用到数组A上,得到新的数组B = {A[3], A[1], A[5], A[4], A[0],A[2]} = {4, 2, 6, 5, 1, 3}。

分析:对于A[i],如果P[0...i-1]中,比P[i]大的元素是k,那么A[i]就向右移动了k位。

code:

def relocate(i):

    change = P[i]

    k = 0

    j = 0

    # 检测A[0...i - 1]中有几个元素比P[i]大

    while j < i:

        if P[j] > change:

            k += 1

        j += 1

    return change + k

def makeShift(begin, end):

    # 把A[begin, end]之间的元素向右边挪动一位

    i = end

    while i > begin:

        A[i] = A[i - 1]

        i -= 1

def doPermutation(A):

    for i in range(len(A)):

        # 计算A[i]右移后的位置

        change = relocate(i)

        temp = A[change]

        makeShift(i, change)

        A[i] = temp

    return A

if __name__ == "__main__":

    A = [1, 2, 3, 4, 5, 6]

    P = [3, 1, 5, 4, 0, 2]

    print(doPermutation(A))

程序运行结果:

[4, 2, 6, 5, 1, 3]

相关文章

  • 【python】数组的序列变换?

    题目:给定数组A = {1, 2, 3, 4, 5, 6},并给定一个变换序列P = {3, 1, 5, 4, 0...

  • 序列密码之RC4

    算法分析 RC4是一个典型的基于非线性数组变换的序列密码。它以一个足够大的数组S为基础,对其进行非线性变换,产生非...

  • Python序列的基本操作

    首先序列是什么: 在Python中序列有:字符串、数组、元组 切片操作 重复操作 连接操作 成员操作

  • 序列

    相信你已经接触过C语言中数组的概念。类似C语言中的数组,Python中有序列的概念。序列是一个集合概念,即,你可以...

  • 《python基础教程》读书笔记第二章-列表和元组

    31.python的序列感觉和其他语言中的数组类似。初看类似,实则强大太多! 2.序列和元组的区别在于序列可以修改...

  • 序列操作

    # 序列的操作 ''' 序列的索引与反向索引 python是由C编写,序列实际上是一个对象 是一个用数组存储的字符...

  • Python学习4:序列

    Python中没有数组的概念,类似的数据结构是序列。序列包括列表和元组两种。今天学习的是一些序列的通用操作。 1....

  • Fluent Python笔记--序列数组

    列表推导式与filter和map 列表推到式所能达到的效果,通常也可以通过filter和map的组合使用来达到。后...

  • Rxjava源码解析笔记 | 剖析map、flatmap操作符的

    操作符 Rxjava提供了对事件序列进行变换的支持; 变换:核心功能;就是将事件序列中的(事件)对象或整个序列进行...

  • Rxjava从入门到深入

    RxJava的牛逼在哪里? 1:提供了对事件序列进行变换的支持 所谓变换,就是将事件序列中的对象或整个序列进行加工...

网友评论

    本文标题:【python】数组的序列变换?

    本文链接:https://www.haomeiwen.com/subject/frvfrctx.html