`

Java版堆排序

阅读更多

/**
* 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实现堆排序

    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实现的堆排序堆排序7.java 使用java实现的堆排序堆...

    Java 最大堆排序

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

    堆排序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实现堆排序.rar

    以下是一个简单的Java堆排序算法实现的伪代码: ```java class HeapSort { void heapify(int arr[], int n, int i) { // 代码实现下沉操作 } void swap(int arr[], int i, int j) { // 代码实现元素交换 } ...

    堆排序之Java实现

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

    堆排序 java实现

    堆排序算法的java实现,采用大根堆。时间复杂度为O(nlogn).

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

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

    java堆排序

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

    java版冒泡排序,插入排序,堆排序,快速排序,归并排序,希尔排序,桶排序

    Java中可以使用`PriorityQueue`类实现堆排序。 4. **快速排序(Quick Sort)**: 快速排序是效率较高的排序算法,基于“分而治之”的策略。选择一个基准值,将数组分为两部分,一部分所有元素都小于基准,另一部分...

    用Java实现的堆排序算法

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

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

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

    容易理解的堆排序代码(JAVA)

    在这个主题中,我们将深入探讨堆排序的概念、工作原理以及如何用Java实现它。首先,我们需要理解堆是什么。 堆是一个近似完全二叉树的结构,并同时满足堆的性质:即父节点的键值或索引总是大于或小于(在最大堆和...

    堆排序的非递归算法分析与JAVA实现

    在JAVA中,堆排序可以通过递归或非递归方式实现。非递归方式通常需要借助循环结构来模拟递归过程。由于堆排序的非递归实现比递归实现更为复杂,需要我们手动控制循环的迭代次数和条件,因此在理解堆排序算法的逻辑时...

    基于java实现堆排序

    堆排序

Global site tag (gtag.js) - Google Analytics