博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[算法]堆排序
阅读量:6378 次
发布时间:2019-06-23

本文共 1375 字,大约阅读时间需要 4 分钟。

hot3.png

堆排序已经忘记的差不多了,借此回顾一下。详见百度百科

public class HeapSort {	//待排序数组,第0个元素无效	private static int[] array = {-1, 3, 1, 5, 10, 7, 8, 4};	//数组的有效元素个数	private static int size = array.length - 1;		//交换数组的第i和第j个元素	private void swap(int i, int j) {		int temp = array[i];		array[i] = array[j];		array[j] = temp;	}		//递归调整堆	private void heapAdjust(int index, int heapSize) {		int leftChildIndex = index * 2;		int rightChildIndex = index * 2 + 1;		int tempIndex = index;		if (index <= heapSize / 2) {			//大顶堆			if (leftChildIndex <= heapSize && array[leftChildIndex] >= array[tempIndex]) {				tempIndex = leftChildIndex;			}			if (rightChildIndex <= heapSize && array[rightChildIndex] >= array[tempIndex]) {				tempIndex = rightChildIndex;			}			if (tempIndex != index) {				swap(tempIndex, index);				heapAdjust(tempIndex, heapSize); //递归调用			}		}	}		//创建堆	private void buildHeap() {		for (int i = size / 2 ; i >= 1 ; i--) {			heapAdjust(i, size);		}		System.out.println("初始大顶堆:");		for (int i : array) {			if (i == -1) {				continue; //-1为无效值			}			System.out.print(" " + i);		}	}		//堆排序	public void heapSort() {		buildHeap(); //首先创建大顶堆		for (int i = size ; i >= 1 ; i--) {			swap(1, i);			heapAdjust(1, i - 1);		}		System.out.println("完成排序:");		for (int i : array) {			if (i == -1) {				continue; //-1为无效值			}			System.out.print(" " + i);		}	}}

转载于:https://my.oschina.net/u/1429862/blog/214794

你可能感兴趣的文章
Expo大作战(十七)--expo结合哨兵(sentry)进行错误异常记录
查看>>
vue.js入门学习
查看>>
第8件事 3步打造产品的独特气质
查看>>
debug-stripped.ap_' specified for property 'resourceFile' does not exist
查看>>
利用MapReduce计算平均数
查看>>
scala-05-map映射
查看>>
Spring Boot - how to configure port
查看>>
右键添加复制路径选项
查看>>
DocFetcher 本机文件搜索工具
查看>>
ambassador 学习三 限速处理
查看>>
HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
查看>>
数据结构:最小生成树--Kruskal算法
查看>>
Swift_1_基本数据类型
查看>>
VS注释与取消注释快捷键
查看>>
深入解析Vuex实战总结
查看>>
流水落花春去也
查看>>
【教训】为什么不作备份?!
查看>>
ThinkPHP3.0启动过程
查看>>
JAX-WS(JWS)发布WebService
查看>>
Centos7安装docker-compse踩过的坑
查看>>