コード例 #1
0
	def increase_key(self,i,key):
		if key<self.queue[i]:
			raise "new key is samller than current key"
		self.queue[i]=key
		while i>1 and self.queue[parent(i)]<self.queue[i]:
			self.queue[i],self.queue[parent(i)]=self.queue[parent(i)],self.queue[i]
			i=parent(i)
コード例 #2
0
def heap_increase_key(a, i, key):
    if key < a[i]:
        print('error: new key is smaller than current key')
    a[i] = key
    while i > 0 and a[heap_sort.parent(i)] < a[i]:
        a[i], a[heap_sort.parent(i)] = a[heap_sort.parent(i)], a[i]
        i = heap_sort.parent(i)
コード例 #3
0
def heap_increase_key(arr, i, key):
    build_max_heap(arr)
    if key < arr[i]:
        print('New key is smaller then current key')
    arr[i] = key
    while i > 0 and arr[parent(i)] < arr[i]:
        arr[i], arr[parent(i)] = arr[parent(i)], arr[i]
        i = parent(i)
コード例 #4
0
def increase_key(heap, i, key):
    if key < heap.at(i):
        raise KeyNonIncreaseException
    heap.put(i, key)
    while i > 0:
        par = hs.parent(i)
        par_val = heap.at(par)
        if par_val < key:
            heap.put(i, par_val)  # bubble up the heap -> NOT WORKING
            heap.put(par, key)
            i = par
        else:
            break