📌  相关文章
📜  在每个数组元素的左侧打印更大的元素(1)

📅  最后修改于: 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("")

现在,我们已经学习了如何在每个数组元素的左侧打印更大的元素。无论你使用双层循环还是堆排序,你都可以得到正确的结果。