用于重新排列给定列表的Python程序,该列表由交替的最小最大元素组成
给定一个整数列表,重新排列列表,使其仅使用列表操作由交替的最小-最大元素组成。列表的第一个元素应该是最小值,第二个元素应该是列表中所有元素的最大值。类似地,第三个元素将是下一个最小元素,第四个元素是下一个最大元素,依此类推。不允许使用额外的空间。
例子:
Input: [1 3 8 2 7 5 6 4]
Output: [1 8 2 7 3 6 4 5]
Input: [1 2 3 4 5 6 7]
Output: [1 7 2 6 3 5 4]
Input: [1 6 2 5 3 4]
Output: [1 6 2 5 3 4]
这个想法是首先按升序对列表进行排序。然后我们开始从列表末尾弹出元素并将它们插入到列表中的正确位置。
下面是上述想法的实现——
Python
# Python program to rearrange a given
# list such that it consists of alternating
# minimum maximum elements
inp = []
# Function to rearrange a given list such
# that it consists of alternating minimum
# maximum elements
def alternateSort():
global inp
# Sort the list in ascending order
inp.sort()
# Get index to first element of
# the list
it = 0
it = it + 1
i = 1
while ( i < (len(inp) + 1)/2 ):
i = i + 1
# pop last element (next greatest)
val = inp[-1]
inp.pop()
# Insert it after next minimum
# element
inp.insert(it, val)
# Increment the pointer for next
# pair
it = it + 2
# Driver code
# Input list
inp=[ 1, 3, 8, 2, 7, 5, 6, 4 ]
# Rearrange the given list
alternateSort()
# Print the modified list
print (inp)
# This code is contributed by Arnab Kundu
输出:
1 8 2 7 3 6 4 5
请参阅有关重新排列给定列表的完整文章,使其包含交替的最小最大元素以获取更多详细信息!