`

堆排序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 最大堆排序

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

    堆排序.java 使用Java来实现

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

    堆排序详解升序和降序Java版本

    堆排序,堆排序详解升序和降序Java版本 堆排序的思路主要就是建堆和排序两部分组成。堆排序是基于⼆叉树的,那么我们⾸先得知道⼆叉树得基本特性。我们在堆排序中定义这样⼀种完整⼆叉树,其中每个结点的值都⼤于...

    堆排序示例程序的Java源码

    堆排序的示例程序,Java实现,其中源码逻辑中主要是参考清华大学出版的《数据结构》一书,从算法逻辑的实现上看,应该是比较容易理解的一种具体实现,其中需要注意的一些细节都添加了帮助理解的少量注释,希望对大家...

    [Java算法-排序]-堆排序.java

    该资源提供了Java中实现堆排序的全面指南。文档中涵盖了堆排序的基本概念,包括如何对数组进行排序以及如何在Java中实现堆排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现堆排序,包括详细的代码示例和...

    用Java实现的堆排序算法

    用Java实现的堆排序算法,二叉树转换为堆,然后排序

    java堆排序

    java堆排序、快速排序、冒泡排序、顺序排序等等

    堆排序java

    堆排序java

    数据结构堆排序的java算法实现

    数据结构堆排序的java算法实现,里面用java语言实现了堆排序的算法实现,有输入和输出结果

Global site tag (gtag.js) - Google Analytics