`

Java堆排序

阅读更多

如下面代码所示(先建立大根堆,然后进行排序):

 

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 

 

 

4
0
分享到:
评论

相关推荐

    java堆排序

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

    java堆排序和几种排序方法实现代码文.pdf

    Java堆排序是一种基于比较的排序算法,其核心思想是构建一个大顶堆或小顶堆,然后通过调整堆结构来达到排序的目的。在给定的代码中,`HeapSort` 类实现了堆排序的过程。 1. **堆排序流程**: - 首先,将待排序的数...

    java堆排序原理及算法实现

    【Java堆排序原理】 堆排序是一种高效的排序算法,基于完全二叉树的堆数据结构。在Java中,堆排序能够实现原地排序,即不需要额外的存储空间,且时间复杂度为O(nlogn)。然而,由于它不是稳定的排序算法,相同元素的...

    Java实现堆排序

    Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C,Java实现堆排序不是C

    Java 最大堆排序

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

    java堆排序原理与实现方法分析

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

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

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

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

    Java堆排序算法详解

    "Java堆排序算法详解" Java堆排序算法是将原始数据转换为堆的形式,然后重复地删除堆顶元素,并将其插入到有序的序列中,以达到排序的目的。下面是Java堆排序算法的知识点总结: 1. heap的概念:堆是一种特殊的...

    java堆排序概念原理介绍

    "java堆排序概念原理介绍" java堆排序是一种基于比较的排序算法,它通过构建一个堆来实现排序。下面是关于java堆排序概念原理的详细介绍: 什么是堆排序 堆排序是一种基于比较的排序算法,它通过构建一个堆来实现...

    java堆排序和几种排序方法实现代码.pdf

    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实现,采用大根堆。时间复杂度为O(nlogn).

    JAVA堆排序算法的讲解

    "JAVA堆排序算法的讲解" JAVA堆排序算法是基于堆数据结构的一种选择排序算法,它的最坏、最好、平均时间复杂度均为O(nlogn),是一种不稳定排序。堆排序的基本思想是将待排序序列构造成一个大顶堆,此时,整个序列...

    堆排序算法(java)

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

    堆排序算法 java

    堆排序算法 java

    Java 堆排序实例(大顶堆、小顶堆)

    Java 堆排序实例(大顶堆、小顶堆) 在计算机科学中,堆排序是一种基于堆这种数据结构的排序算法。堆是一种近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆...

    堆排序之Java实现

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

Global site tag (gtag.js) - Google Analytics