随机排列数组
问题描述:假定给定一个数组
A
A
A,包含n个元素,构造这个数组的一个随机排列
思路:为数组
A
A
A中的每个元素赋一个随机的优先级,然后依据优先级对随机数组
A
A
A进行排列
python实现:
# -*-coding:utf8 -*-
import sys
import random
def permute_by_sorting(A):
n = len(A)
P = list()
for i in range(n):
# 1 ~ n的3次方,是为了让优先级随机数尽可能的唯一
randata = random.randint(1,n*n*n)
P.append((A[i],randata))
result = sorted(P, key=lambda x:x[1])
A_new = [ x[0] for x in result]
return A_new
if __name__=='__main__':
A = [1,2,3,4,5,6,7]
A_sort = permute_by_sorting(A)
print(A)
print(A_sort)