/**
* author Akalius Kung 2008-2-9
**/
public class HeapSort {
private int heapLen;
private int[] sort(int[] array){
heapLen=array.length;
buildHeap(array); // init the heap
for(int i=heapLen-1;i>0;i--){ // swap root and last node, up to down
swap(array,i,0);
heapLen--;
heapify(array,0); // reheapify the root node from 0 to n-1
}
return array;
}
private void buildHeap(int[] array) {
for(int i=heapLen/2;i>=0;i--){ // down to up
heapify(array,i);
}
}
private void heapify(int[] array, int i) { // heapify tree which root is i
int left=2*i+1;
int right=2*i+2;
int largest=0;
if(left<heapLen && array[left]>array[i]){
largest=left;
}
else largest=i;
if(right<heapLen && array[right]>array[largest]){
largest=right;
}
if(largest!=i){
swap(array,i,largest);
heapify(array,largest);
}
}
private void swap(int[] array, int i, int j) {
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
public static void main(String[] args) {
int[] array={1,21,34,79,98,23,68,2,3,8,33,7,87,32,24,6,776};
HeapSort heapSort=new HeapSort();
int[] result=heapSort.sort(array);
for(int i=0;i<result.length;i++){
System.out.print(result[i]+" ");
}
}
}
分享到:
相关推荐
Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C
堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用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来实现堆...
java的堆排序算法实现程序,含测试,可直接运行。java的堆排序算法实现程序,含测试,可直接运行。
堆排序算法 java
以下是一个简单的Java堆排序算法实现的伪代码: ```java class HeapSort { void heapify(int arr[], int n, int i) { // 代码实现下沉操作 } void swap(int arr[], int i, int j) { // 代码实现元素交换 } ...
以下是Java实现堆排序的基本步骤: 1. 构建大顶堆:从最后一个非叶子节点(即最后一个元素的父节点)开始,自底向上、自右向左进行调整,确保每个节点都大于或等于其子节点。 2. 交换堆顶元素与末尾元素:将最大...
堆排序算法的java实现,采用大根堆。时间复杂度为O(nlogn).
堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和Python分别实现堆排序算法; 堆排序:应用Java和...
根据提供的信息,我们可以深入探讨Java中的堆排序以及几种常见的排序算法。这包括堆排序、快速排序、冒泡排序和选择排序等。 ### 堆排序 堆排序是一种基于比较的排序算法,它利用了二叉堆的数据结构。二叉堆可以是...
Java中可以使用`PriorityQueue`类实现堆排序。 4. **快速排序(Quick Sort)**: 快速排序是效率较高的排序算法,基于“分而治之”的策略。选择一个基准值,将数组分为两部分,一部分所有元素都小于基准,另一部分...
用Java实现的堆排序算法,二叉树转换为堆,然后排序
该资源提供了Java中实现堆排序的全面指南。文档中涵盖了堆排序的基本概念,包括如何对数组进行排序以及如何在Java中实现堆排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现堆排序,包括详细的代码示例和...
在这个主题中,我们将深入探讨堆排序的概念、工作原理以及如何用Java实现它。首先,我们需要理解堆是什么。 堆是一个近似完全二叉树的结构,并同时满足堆的性质:即父节点的键值或索引总是大于或小于(在最大堆和...
在JAVA中,堆排序可以通过递归或非递归方式实现。非递归方式通常需要借助循环结构来模拟递归过程。由于堆排序的非递归实现比递归实现更为复杂,需要我们手动控制循环的迭代次数和条件,因此在理解堆排序算法的逻辑时...
堆排序