`

堆排序Java版

阅读更多

堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。

堆排序的平均时间复杂度为O(nlogn),空间复杂度为O(1)

public void heapSort(int[] datas) {
		int length = datas.length;
		for(int i = length / 2; i >= 0; i--) {
			buildHeap(datas, i, length - 1);
		}
		for(int i = length - 1; i > 0; i--) {
			int temp = datas[0];
			datas[0] = datas[i];
			datas[i] = temp;
			buildHeap(datas, 0, i - 1);
		}
	}
	
	private void buildHeap(int[] datas, int start, int length) {
		int s = start;
		int lc = 2 * s +1;
		int father = datas[s];
		
		for(; lc <= length; s = lc, lc = 2 * lc +1) {
			if(lc < length && datas[lc] < datas[lc + 1]) {
				lc++;
			}
			if(datas[s] < datas[lc]) {
                                father = datas[s];
				datas[s] = datas[lc];
				datas[lc] = father;
			} else {
				break;
			}
		}
	}

 

分享到:
评论

相关推荐

    堆排序 java版的源码

    堆排序

    堆排序 java实现

    堆排序 java实现

    堆排序7.java 使用java实现的堆排序

    堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆...

    Java实现堆排序

    Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C

    堆排序12.java 使用java代码实现

    堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用java代码实现堆排序12.java 使用...

    堆排序10.java 使用java来实现

    堆排序10.java 使用java来实现堆排序10.java 使用java来实现堆排序10.java 使用java来实现堆排序10.java 使用java来实现堆排序10.java 使用java来实现堆排序10.java 使用java来实现堆排序10.java 使用java来实现堆...

    堆排序算法 java

    堆排序算法 java

    堆排序Java代码示例

    附件是堆排序Java代码示例,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的! 堆排序是一种高效的比较类排序算法,它利用了二叉堆的数据结构来实现排序。堆排序可以分为两个主要步骤:建堆(将...

    堆排序 Java代码示例

    附件是堆排序Java代码示例,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的! 堆排序是一种高效的比较类排序算法,它利用了二叉堆的数据结构来实现排序。堆排序可以分为两个主要步骤:建堆(将...

    堆排序之Java实现

    以下是Java实现堆排序的基本步骤: 1. 构建大顶堆:从最后一个非叶子节点(即最后一个元素的父节点)开始,自底向上、自右向左进行调整,确保每个节点都大于或等于其子节点。 2. 交换堆顶元素与末尾元素:将最大...

    堆排序算法(java)

    java的堆排序算法实现程序,含测试,可直接运行。java的堆排序算法实现程序,含测试,可直接运行。

    应用Java和Python分别实现堆排序算法

    堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和...

    DSAA_堆排序java实现_源码

    标题中的“DSAA_堆排序java实现_源码”表明这是一个关于数据结构与算法分析(Data Structures and Algorithms Analysis,简称DSAA)的资料包,主要关注堆排序算法的Java实现。堆排序是一种高效的排序算法,它利用了...

    堆排序JAVA实现代码

    以下将详细介绍堆排序的原理、步骤以及Java实现。 **堆排序的原理** 堆排序的核心思想是构建一个完全二叉树,即堆,然后通过调整堆结构,使得根节点(最大元素或最小元素)总能处于正确的位置。这个过程分为两个...

    Java 最大堆排序

    Java 写得最大堆排序代码,给大家参考下,自己刚写的。

    java堆排序

    根据提供的信息,我们可以深入探讨Java中的堆排序以及几种常见的排序算法。这包括堆排序、快速排序、冒泡排序和选择排序等。 ### 堆排序 堆排序是一种基于比较的排序算法,它利用了二叉堆的数据结构。二叉堆可以是...

    堆排序.java 使用Java来实现

    堆排序 堆排序.java 使用Java来实现

Global site tag (gtag.js) - Google Analytics