📅  最后修改于: 2023-12-03 15:08:03.831000             🧑  作者: Mango
在某些编程问题中,我们需要查找一个给定数组中比每个元素更大的元素,并在每个元素的左侧打印它们。这可以通过使用双层循环或堆排序来实现。下面将介绍两种方法:
双层循环遍历数组中的每个元素,以查找比它更大的元素,并在当前元素左侧打印它们。这个方法的复杂度为O(n^2),其中n是数组的长度。
def print_greater_numbers(arr):
for i in range(len(arr)):
greater_num = -1
for j in range(i+1, len(arr)):
if arr[j] > arr[i]:
greater_num = arr[j]
break
print(greater_num, end=' ')
print("")
堆排序将数组转换为二叉堆,并根据给定的排序顺序从堆中取出元素。我们可以使用堆排序来查找比每个元素更大的元素。
这个方法的复杂度为O(nlogn),其中n是数组的长度。
import heapq
def print_greater_numbers(arr):
heap = []
for num in arr:
heapq.heappush(heap, -num)
for i in range(len(arr)):
greater_num = -1
while heap:
num = -heap[0]
if num > arr[i]:
greater_num = num
break
heapq.heappop(heap)
print(greater_num, end=' ')
heapq.heappush(heap, -num)
print("")
现在,我们已经学习了如何在每个数组元素的左侧打印更大的元素。无论你使用双层循环还是堆排序,你都可以得到正确的结果。