排序算法之堆排序
import random def sift(alist, k, m): i = k j = 2 * i while j <= m: if j < m and alist[j] < alist[j + 1]: j += 1 if alist[i] > alist[j]: break else: alist[i], alist[j] = alist[j], alist[i] i = j j = 2 * i def heap_sort(alist, n): for i in range(n // 2 + 1, 0, -1): sift(alist, i, n) for i in range(1, n): alist[1], alist[n - i + 1] = alist[n - i + 1], alist[1] sift(alist, 1, n - i) if __name__ == '__main__': alist = [random.randint(1, 100) for _ in range(30)] heap_sort(alist, len(alist) - 1) print(alist)
使用Python编写的堆排序,测试数据是30个1到100之间的整数。

浙公网安备 33010602011771号