摘要: 同上一篇,使用堆排序的方式做。 第一步构建最小堆,构建好之后数组的第一个元素就是最小的; 第二步排序,开始执行k-1次sift,每次将剩余元素中最小的元素放到未排序元素的末尾 第三步,将数组的后k个数返回即为数组中最小的k个数。 func getLeastNumbers(arr []int, k i 阅读全文
posted @ 2022-01-27 20:51 丶Blank 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 首先BuildHeap,build heap是指让数组符合堆的性质,最大堆就是根节点的值>=子节点的值。 第一步build完之后,arr[0]就是最大的元素; 然后执行k-1次调整,就会把第k大的元素调整到arr[0]的位置。【要第一大的元素,就不需要再调整了,要第二大就再调整一次,以此类推...】 阅读全文
posted @ 2022-01-27 20:35 丶Blank 阅读(139) 评论(0) 推荐(0) 编辑