如下面代码所示(先建立大根堆,然后进行排序):
public class HeapSort
{
public static void main(String[] args)
{
int[] a = {26, 5, 77, 1, 61, 11, 59, 15, 48, 19};
Sort(a);
}
public static void Sort(int[] a)
{
int n = a.length;
int temp = 0;
Display(a, "Before sort : ");
for(int i=n/2; i>0; i--)
Adjust(a, i-1, n);
for(int i=n-2; i>=0; i--)
{
temp = a[i+1];
a[i+1] = a[0];
a[0] = temp;
Adjust(a, 0, i+1);
}
Display(a, "After sort : ");
}
public static void Adjust(int[] a, int i, int n)
{
int j = 0;
int temp = 0;
temp = a[i];
j = 2 * i + 1;
while(j <= n-1)
{
if(j < n-1 && a[j] < a[j+1])
j++;
if(temp >= a[j])
break;
a[(j-1)/2] = a[j];
j = 2 * j + 1;
}
a[(j-1)/2] = temp;
}
public static void Display(int[] a, String str)
{
System.out.println(str);
for(int i=0; i<a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
}
输出结果为:
Before sort :
26 5 77 1 61 11 59 15 48 19
After sort :
1 5 11 15 19 26 48 59 61 77
分享到:
相关推荐
根据提供的信息,我们可以深入探讨Java中的堆排序以及几种常见的排序算法。这包括堆排序、快速排序、冒泡排序和选择排序等。 ### 堆排序 堆排序是一种基于比较的排序算法,它利用了二叉堆的数据结构。二叉堆可以是...
Java堆排序是一种基于比较的排序算法,其核心思想是构建一个大顶堆或小顶堆,然后通过调整堆结构来达到排序的目的。在给定的代码中,`HeapSort` 类实现了堆排序的过程。 1. **堆排序流程**: - 首先,将待排序的数...
【Java堆排序原理】 堆排序是一种高效的排序算法,基于完全二叉树的堆数据结构。在Java中,堆排序能够实现原地排序,即不需要额外的存储空间,且时间复杂度为O(nlogn)。然而,由于它不是稳定的排序算法,相同元素的...
Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C
Java 写得最大堆排序代码,给大家参考下,自己刚写的。
"java堆排序原理与实现方法分析" Java 堆排序是一种基于完全二叉树的排序算法,它可以将数组中的元素排序为递增或递减的顺序。下面将详细介绍 Java 堆排序的原理与实现方法。 堆排序原理 堆是一个数组,被看成一...
堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆排序7.java 使用java实现的堆排序堆...
以下是一个简单的Java堆排序算法实现的伪代码: ```java class HeapSort { void heapify(int arr[], int n, int i) { // 代码实现下沉操作 } void swap(int arr[], int i, int j) { // 代码实现元素交换 } ...
在JAVA中,堆排序可以通过递归或非递归方式实现。非递归方式通常需要借助循环结构来模拟递归过程。由于堆排序的非递归实现比递归实现更为复杂,需要我们手动控制循环的迭代次数和条件,因此在理解堆排序算法的逻辑时...
"Java堆排序算法详解" Java堆排序算法是将原始数据转换为堆的形式,然后重复地删除堆顶元素,并将其插入到有序的序列中,以达到排序的目的。下面是Java堆排序算法的知识点总结: 1. heap的概念:堆是一种特殊的...
"java堆排序概念原理介绍" 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实现,采用大根堆。时间复杂度为O(nlogn).
"JAVA堆排序算法的讲解" JAVA堆排序算法是基于堆数据结构的一种选择排序算法,它的最坏、最好、平均时间复杂度均为O(nlogn),是一种不稳定排序。堆排序的基本思想是将待排序序列构造成一个大顶堆,此时,整个序列...
java的堆排序算法实现程序,含测试,可直接运行。java的堆排序算法实现程序,含测试,可直接运行。
堆排序算法 java
Java 堆排序实例(大顶堆、小顶堆) 在计算机科学中,堆排序是一种基于堆这种数据结构的排序算法。堆是一种近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆...
以下是Java实现堆排序的基本步骤: 1. 构建大顶堆:从最后一个非叶子节点(即最后一个元素的父节点)开始,自底向上、自右向左进行调整,确保每个节点都大于或等于其子节点。 2. 交换堆顶元素与末尾元素:将最大...