`
gmleegmlee
  • 浏览: 117005 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HeapSort 堆排序算法Java实现

阅读更多
public class HeapSort {
	private static int leftChild(int i){
		return 2 * i + 1;
	}
	
	private static void percDown(Comparable[] data, int i, int n){
		int child;
		Comparable tmp;
		
		for(tmp = data[i]; leftChild(i) < n; i = child){
			child = leftChild(i);
			if(child != n - 1 && data[child].compareTo(data[child + 1]) < 0)
				child ++;
			if(tmp.compareTo(data[child]) < 0)
				data[i] = data[child];
			else 
				break;
		}
		data[i] = tmp;
	}
	
	private static void swapReferences(Comparable[] a, int src, int des){
		Comparable tmp = a[des];
		a[des] = a[src];
		a[src] = tmp;
	}
	
	public static void heapsort(Comparable[] a){
		
		for(int i = a.length / 2; i >= 0; i --)
			percDown(a, i, a.length);
		for(int i = a.length - 1; i > 0; i--){
			swapReferences(a, 0, i);
			percDown(a, 0, i);
		}
			
	}
	
	public static void main(String[] args){
		Comparable[] a = new Comparable[20];
		for(int i = 0; i < a.length; i++){
			a[i] = (int)(Math.random() * 100);
		}
		
		System.out.println("the Before!");
		for(int i = 0; i < a.length; i++)
			System.out.print(a[i] +",");
		
		System.out.println("");
		heapsort(a);
		for(int i = 0; i< a.length; i ++)
			System.out.print(a[i]+ ",");
	}

}

分享到:
评论

相关推荐

    堆排序算法(java)

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

    Java实现堆排序算法(源代码)

    以下是一个用Java实现的堆排序算法示例。该示例中,首先定义了一个adjustHeap方法用于调整堆结构,确保满足大顶堆的性质;然后,在heapSort方法中,首先通过循环将待排序序列构建成大顶堆,接着通过交换堆顶元素与...

    堆排序算法 Java代码示例

    堆排序是一种基于比较的排序算法,它使用二叉堆数据结构。 heapSort 方法首先构建一个最大堆,然后交换堆顶元素(最大元素)与最后一个元素,接着重新对堆进行堆化操作,这个过程重复执行,直到堆的大小减至1,此时...

    java实现堆排序算法

    heapSort 方法实现了堆排序算法。它使用以下步骤进行排序: 构建最大堆:从非叶子节点开始向上调整,使得父节点的值大于等于子节点的值。 排序阶段:依次从堆顶(最大值)开始,将堆顶元素与末尾元素交换,然后...

    堆排序Java代码示例

    附件是堆排序Java代码示例,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!...main方法用于测试堆排序算法,它创建了一个整数数组并调用sort方法对其进行排序,最后打印出排序后的数组。

    堆排序 Java代码示例

    附件是堆排序Java代码示例,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!...main方法用于测试堆排序算法,它创建了一个整数数组并调用sort方法对其进行排序,最后打印出排序后的数组。

    ED2-HeapSort:堆排序算法的实现

    ED2-堆排序 堆排序算法的实现

    java八大经典排序算法

    java写的八大经典排序算法(win7 jdk 1.6 下运行) 冒泡排序 BubbleSort 堆排序 HeapSort 插入排序 InsSort 快速排序 QuickSort 归并排序 MergeSort 基数排序 BucketSort 简单选择排序 SelectSort 希尔排序 Shell...

    各种排序算法总结

    常用排序算法总结,包括插入排序(InsertionSort),冒泡排序(BubbleSort),选择排序(SelectionSort),快速排序(QuickSort... * 二路归并排序(MergeSort),堆排序(HeapSort)。有每一种排序算法的复杂度分析以及实现思路~

    LeetCodeAndSwordToOffer:LeetCode、SwordToOffer 等 Java 算法

    目录 02.字符串 03.树 04.哈希表 05.栈和队列 06.图 07.位运算 08.链表 程序基本输入输出 基础算法 返回目录 # English Title ...Java ...Java ...Java ...Java ...Java ...Java ...Java ...Java ...Java ...Java ...HeapSort 堆排序 Java 1

    leetcode切割分组-java_algorithm:排序算法演示

    leetcode切割分组 java_algorithm this is a sorting algorithm demo. created by ...堆排序 QuickSort 快速排序 平均时间复杂度 O(n + k) 空间复杂度 O(k) CountingSort | 计数排序 | 用一个计算器

    TheAlgorithms:基于Java 8的算法实现

    :thinking_face: 算法 ...堆排序-HeapSort :lion:搜索算法-搜索 与搜索相关的数据结构:二叉查找树,平衡查找树,散列表 线性查找-LinearSearch 二分查找-BinarySearch 广度优先搜索 深度优先搜索

    汉诺塔java源码-ForPower:java工程师内功修炼手册

    汉诺塔java源码 ForPower 一些个人的学习笔记的归档,相关目录内容如下: Arithmetic Atoi.java,实现 atoi,将字符串转为整数 BackPack.java,背包算法。 BasicSort.java,基数排序。...堆排序。 InsertionS

    数据结构和算法Hacktoberfest18:数据结构和算法列表。 随时为Hacktoberfest '18贡献力量!

    数据结构与算法 对于Hacktoberfest 2018... 以上几点示例:Java中的堆排序应进入java/heapsort.java 您可以选择仅包含算法的功能或整个程序。 如果您所用语言的文件夹不存在,请创建一个新文件夹。 不要害怕进行公关

    leetcode凑硬币-Leetcode:力码

    堆排序及有关方法。 2,BitTree.Java ;二叉树的遍历 3,DataSort.Java;排序算法 4,堆排的第二种思路 LeetCode322 :给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的...

    Algorithms-algs4-cos226-Princeton-Coursera :: 100:算法的奖金分配第4版,Robert Sedgewick和Kevin Wayne

    主题包括联合查找,二进制搜索,堆栈,队列,包,插入排序,选择排序,shellsort,quicksort,3向quicksort,mergesort,heapsort,binary堆,binary搜索树,red-black树,分离链和线性探测哈希表,Graham扫描和kd...

Global site tag (gtag.js) - Google Analytics