【算法基础(4)】堆排序(二)
创始人
2024-06-03 07:57:37
0
堆排序(二)

把数组从零开始连续的一段 = 完全二叉树 size

i 左 son 2*1+1

i 右 son 2*1+2

父 (i-1) / 2

堆是完全二叉树,分为大根堆和小根堆

在完全二叉树里,每一棵子数最大的值是头节点的值,就是大根堆

同理,在完全二叉树里,每一棵子数最小的值是头节点的值,就是小根堆

大根堆排序,插入的值 和 父节点比较,如果比父节点大,和它交换,直到最大,就停止,通过这样的调整,得到的一定是大根堆。这个过程,我们叫做 heapInsert

public static void heapInsert(int [] arr, int index) {while (arr[index] > arr[(index - 1) / 2]) {// 和父节点交换值  并且把当前下标移动到父节点swap(arr, index, (index - 1) / 2); index = (index - 1) / 2; }
}

从一堆数中找出最大值,移除它,保持还是大根堆,我们管这个过程叫做heapify

public static void heapify(int [] arr, int index, int heapSize) {int left = index * 2 + 1; // 左孩子的下标while (left < heapSize) { // 下方还有孩子 (左孩子越界,那么就没有右孩子了。)// 俩个孩子中,谁的值大,把下标给谁 (先找出孩子中最大的)int largest = left + 1 < heapSize && arr[left + 1] > arr[left] ? left + 1:left;// 父和孩子之间,谁的值大,把下标给谁 (较大的孩子和父节点找出最大的)largest = arr[largest] > arr[index] ? largest : index;if (largest == index) { // 如果当前节点就是最大的 跳出break;}swap(arr, largest, index); // 交换位置index = largest; // 继续比较left = index * 2 + 1; // 找左孩子继续 while}
}

题目:

已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过K,并且K相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。

假如K = 6 ,建立一个heapSize = 7 的小根堆 (这样小根堆的最小值一定是数组的最小值)

把最小的弹出,保持小根堆,新加入的数字做heapfiy,

继续上面的步骤,直到全部弹出。

public static void main(String[] args) {PriorityQueue heap = new PriorityQueue<>();heap.add(8);heap.add(4);heap.add(10);heap.add(3);while(!heap.isEmpty) {System.out.println(heap.poll());}
}

相关内容

热门资讯

文物界“出差天团”进京!猜猜这... 文物界“出差天团”进京!猜猜这些青铜界顶流会说啥?_北京时间现在上猫眼、美团、大众点评、微信,搜索“...
“十二星座”手动上新 全球首个... 转自:央视今天(14日)12时12分,我国在酒泉卫星发射中心使用长征二号丁运载火箭,成功将太空计算卫...
黑龙江开展全省跨境电商专题培训 转自:新华财经为提高黑龙江省商务主管部门跨境电商业务能力和跨境电商企业经营水平,推动传统外贸企业向跨...
西安鄠邑法院 | “最后一劝”... 保险公司:你在投保时就应当将被保险人之前出现过高热惊厥的病情如实告知给我们。岳鑫:我当时已经向保险业...
冀东水泥(000401.SZ)... 格隆汇5月14日丨冀东水泥(000401.SZ)公布2025年限制性股票激励计划(草案),本计划拟向...
网约车座椅靠背张贴“差评者得癌... 近日,有网友发帖称自己“五一”假期在杭州打网约车观看演唱会时,网约车前排座椅靠背张贴了一张“差评者得...
甘化科工:公司控股子公司沈阳含... 证券日报网讯甘化科工5月14日在互动平台回答投资者提问时表示,公司控股子公司沈阳含能生产的钨合金预制...
FOMC今年票委发话:4月低通... 芝加哥联储主席古尔斯比泼下冷水:最新CPI数据不一定反映出关税的真实影响,或许只是“尘埃飞扬”。芝加...
工行梧州藤县支行成功落地全辖首... 转自:新华财经近期,工行梧州藤县支行深入贯彻落实金融“五篇大文章”的工作部署,落实乡村振兴工作,将普...
爱迪特:公司保持开放态度,持续... 证券日报网讯爱迪特5月14日在互动平台回答投资者提问时表示,公司保持开放态度,持续关注口腔医疗及相关...
中航西飞:公司及子公司陕飞依托... 证券日报网讯中航西飞5月14日在互动平台回答投资者提问时表示,公司及子公司陕飞依托大中型飞机平台,持...
济宁市交通强国山东示范区建设推... 转自:济宁政务5月14日上午,济宁市交通强国山东示范区建设推进会议召开。济宁市委书记温金荣出席并讲话...
小马智行创始人自愿延长锁定期5... 5月14日,小马智行(NASDAQ:PONY)宣布,董事会主席、联合创始人、CEO彭军,以及联合创始...
北京博物馆头部达人联盟成立 5月14日,在“5·18国际博物馆日”中国主会场活动、北京博物馆季及“看·见殷商”展即将举行的重要时...
赵乐际分别会见拉丁美洲议会议长... 转自:北京日报客户端全国人大常委会委员长赵乐际14日在北京分别会见拉丁美洲议会议长冈萨雷斯、中美洲议...
在古老的意大利科莫歌剧院,廖昌... 转自:上观新闻意大利当地时间5月12日晚,拥有212年历史的意大利科莫歌剧院迎来2024-2025年...
2025 新能源五大标杆车型解... 转自:衡水日报在 2025 年新能源汽车技术呈 "井喷式" 发展的大背景下,消费者对车辆的核心诉求已...
紫光原董事长赵伟国被判死缓,紫... 【#紫光原董事长赵伟国被判死缓#,#紫光原董事长曾被称为并购狂人#,紫光集团破产重组后如何“求生”?...
为什么南方人家里都有这种碗? 作者:敏敏 徐可心编辑:陈燕妮如果你来到南方的街头吃饭,很可能会看到一种印着大公鸡的碗。小红书上就有...