题目:将数组A中的元素重新排列,得到数组B,使其具有如下特点:
B[0] <= B[1] >= B[2] <= B[3] ...
分析:遍历数组,如果元素下标i是偶数,且A[i] > A[i + 1],那么就两两交换;如果i是奇数,且A[i] < A[i + 1],那么也两两交换,其最终也能达成效果。时间复杂度O(n)。
code:
def swap(arr, i, j):
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
arr = [1, 3, 4, 5, 6, 2, 7, 9, 10]
for i in range(len(arr) - 1):
if (i % 2 == 0 and arr[i] > arr[i + 1] or (i % 2 == 1 and arr[i] < arr[i + 1])):
swap(arr, i, i + 1)
print(arr)
程序运行结果:
[1, 4, 3, 6, 2, 7, 5, 10, 9]