`
hcx2013
  • 浏览: 88875 次
社区版块
存档分类
最新评论

HeapSort

 
阅读更多
import java.util.Arrays;

public class HeapSort  {
	public static void main(String[] args) {
		int[] arr = new int[]{12, 4, 76, 14, 100, 1, 3};
		/*for (int i = 0; i != arr.length; i++) {
			heapInsert(arr, arr[i], i);
		}*/
		for (int i = (arr.length-1)/2; i >= 0; i--) {
			heapify(arr, i, arr.length);
		}
		for (int i = arr.length-1; i > 0 ; i--) {
			int tmp = arr[i];
			arr[i] = arr[0];
			arr[0] = tmp;
			heapify(arr, 0, i);
		}
		System.out.println(Arrays.toString(arr));
	}
	public static void heapInsert(int[] arr, int value, int index) {
		arr[index] = value;
		while (index != 0) {
			int parent = (index-1)/2;
			if (arr[parent] < arr[index]) {
				int tmp = arr[parent];
				arr[parent] = arr[index];
				arr[index] = tmp;
			} else {
				break;
			}
			index = parent;
		}
	}
	public static void heapify(int[] arr, int index, int heapSize) {
		int left = index * 2 + 1;
		int right = index * 2 + 2;
		int largest = index;
		while (left < heapSize) {
			if (arr[left] > arr[index]) {
				largest = left;
			}
			if (right < heapSize && arr[right] > arr[largest]) {
				largest = right;
			}
			if (largest != index) {
				int tmp = arr[largest];
				arr[largest] = arr[index];
				arr[index] = tmp;
			} else {
				break;
			}
			index = largest;
			left = index * 2 + 1;
			right = index * 2 + 2;
		}
	}
}

 

分享到:
评论

相关推荐

    堆排序演示代码C++ heapsort.cpp

    本代码主要演示了堆排序的排序方法,代码在centos7中测试通过。 编译方法使用g++ heapsort.cpp -o heapsort,运行heapsort即可

    堆排序 heapsort

    在这个代码中,`heapify`函数用于调整堆,`heapSort`函数首先通过`buildHeap`过程构建堆,然后通过不断地交换堆顶元素和末尾元素并调整堆来完成排序。 在数据结构的学习中,理解堆排序的原理和实现是至关重要的,...

    heapsort C语言实现

    heapsort

    堆排序 heapsort c语言实现

    c语言实现堆排序算法 heapsort 排序算法 。采用随机产生100个数 利用堆排序 。排序1000次 计算排序用的时间。

    c语言实现堆排序算法 heapsort

    堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序的平均时间复杂度为Ο...

    heapsort

    基于c++的堆积排序算法。排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到...

    heapsort.rar

    在这个"heapsort.rar"压缩包中,包含了一个名为"heapsort.cpp"的源代码文件,这应该是用C++语言实现的堆排序程序。下面,我们将深入探讨堆排序的基本原理、实现步骤以及其在C++中的应用。 堆排序的核心思想是建立一...

    排序算法-基于C语言实现的排序算法之HeapSort实现.zip

    在本资料中,我们将深入探讨一种高效的排序算法——堆排序(HeapSort)。 **C语言** C语言是一种强大的、高效的编程语言,常用于系统编程、嵌入式系统以及各种应用软件的开发。它的语法简洁明了,适合编写底层算法...

    sort-使用C++实现的排序算法之HeapSort.zip

    本主题聚焦于C++实现的HeapSort(堆排序)算法,这是一种高效的、基于比较的排序方法。HeapSort利用了二叉堆的数据结构特性来实现排序,其过程分为两个主要阶段:构建最大(或最小)堆和交换堆顶元素。 **1. 堆的...

    09 HeapSort.zip

    《严蔚敏数据结构与算法:HeapSort深度解析》 在计算机科学中,数据结构与算法是编程的基础,其中排序算法扮演着至关重要的角色。HeapSort(堆排序)是一种基于比较的排序算法,由Napier和Rabin于1964年提出,后经...

    C语言编程实现堆排序HeapSort的源代码

    C语言编程实现堆排序HeapSort的源代码。堆排序(Heap Sort)是一种基于堆数据结构的选择排序算法,O(nlogn),不需要额外的存储空间,因此具有 原地排序 和 不稳定排序 的特点。堆排序适用于对大量数据进行排序,尤其...

    DataStructure_Heap_heapsort_heap_Datastructure_made_

    `heapsort`是一种基于堆的数据排序算法。其工作原理是首先将无序序列构造成一个大顶堆(或小顶堆),然后将堆顶元素与末尾元素交换,使末尾成为最大元素(或最小元素)。接着,对剩余n-1个元素重新调整为堆,再将堆...

    qsort/heapsort/merge/BinarySearch/List实现

    自己写的一些简单算法和数据结构的代码 快排 堆排 归并 二分查找 单链表

    09 HeapSort.rar

    **堆排序(HeapSort)**是计算机科学中一种重要的排序算法,尤其在数据结构与算法的学习中占据着核心地位。这个名为“09 HeapSort”的压缩包文件,显然包含了关于堆排序的具体实现,很可能是严蔚敏教授的数据结构课程...

    runoob-algorithm-HeapSort.zip

    标题中的"runoob-algorithm-HeapSort.zip"暗示了我们即将探讨的是关于堆排序(HeapSort)的算法。堆排序是一种高效的排序算法,属于比较排序的一种,它利用了计算机科学中的树形数据结构——堆。 堆是一个近似完全...

    排序算法之HeapSort

    python 排序算法之HeapSort

    C#实现heapSort.rar

    C#实现heapSort.rar

    C++实现heapSort.rar

    C++实现heapSort.rar

    C语言实现heapSort.rar

    C语言实现heapSort.rar

    zoj 2665 Heapsort.md

    zoj 2665 Heapsort.md

Global site tag (gtag.js) - Google Analytics