在Python中,可以使用heapq模塊來實現堆排序,并輸出元素的下標。
下面是一個示例代碼:
import heapq
def heap_sort_with_index(arr):
heap = []
for i, num in enumerate(arr):
heapq.heappush(heap, (num, i))
sorted_arr = []
while heap:
sorted_arr.append(heapq.heappop(heap)[1])
return sorted_arr
在上面的代碼中,我們使用heapq.heappush()將元素(num, i)加入到堆中,其中num是數組中的元素,i是該元素的下標。這樣,heap中的每個元素都是一個元組,元組的第一個元素是數組中的元素,第二個元素是該元素的下標。
然后,我們使用heapq.heappop()從堆中彈出元素,并將其下標添加到sorted_arr中。最終,返回sorted_arr,即按從小到大排序的元素下標列表。
示例使用:
arr = [4, 2, 7, 1, 9, 5]
sorted_indexes = heap_sort_with_index(arr)
print(sorted_indexes) # 輸出 [3, 1, 0, 5, 2, 4]
上述示例中,原始數組arr為[4, 2, 7, 1, 9, 5],經過堆排序后,得到的元素下標列表為[3, 1, 0, 5, 2, 4]。