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; } } }
相关推荐
本代码主要演示了堆排序的排序方法,代码在centos7中测试通过。 编译方法使用g++ heapsort.cpp -o heapsort,运行heapsort即可
在这个代码中,`heapify`函数用于调整堆,`heapSort`函数首先通过`buildHeap`过程构建堆,然后通过不断地交换堆顶元素和末尾元素并调整堆来完成排序。 在数据结构的学习中,理解堆排序的原理和实现是至关重要的,...
heapsort
c语言实现堆排序算法 heapsort 排序算法 。采用随机产生100个数 利用堆排序 。排序1000次 计算排序用的时间。
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序的平均时间复杂度为Ο...
基于c++的堆积排序算法。排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到...
在这个"heapsort.rar"压缩包中,包含了一个名为"heapsort.cpp"的源代码文件,这应该是用C++语言实现的堆排序程序。下面,我们将深入探讨堆排序的基本原理、实现步骤以及其在C++中的应用。 堆排序的核心思想是建立一...
在本资料中,我们将深入探讨一种高效的排序算法——堆排序(HeapSort)。 **C语言** C语言是一种强大的、高效的编程语言,常用于系统编程、嵌入式系统以及各种应用软件的开发。它的语法简洁明了,适合编写底层算法...
本主题聚焦于C++实现的HeapSort(堆排序)算法,这是一种高效的、基于比较的排序方法。HeapSort利用了二叉堆的数据结构特性来实现排序,其过程分为两个主要阶段:构建最大(或最小)堆和交换堆顶元素。 **1. 堆的...
《严蔚敏数据结构与算法:HeapSort深度解析》 在计算机科学中,数据结构与算法是编程的基础,其中排序算法扮演着至关重要的角色。HeapSort(堆排序)是一种基于比较的排序算法,由Napier和Rabin于1964年提出,后经...
C语言编程实现堆排序HeapSort的源代码。堆排序(Heap Sort)是一种基于堆数据结构的选择排序算法,O(nlogn),不需要额外的存储空间,因此具有 原地排序 和 不稳定排序 的特点。堆排序适用于对大量数据进行排序,尤其...
`heapsort`是一种基于堆的数据排序算法。其工作原理是首先将无序序列构造成一个大顶堆(或小顶堆),然后将堆顶元素与末尾元素交换,使末尾成为最大元素(或最小元素)。接着,对剩余n-1个元素重新调整为堆,再将堆...
自己写的一些简单算法和数据结构的代码 快排 堆排 归并 二分查找 单链表
**堆排序(HeapSort)**是计算机科学中一种重要的排序算法,尤其在数据结构与算法的学习中占据着核心地位。这个名为“09 HeapSort”的压缩包文件,显然包含了关于堆排序的具体实现,很可能是严蔚敏教授的数据结构课程...
标题中的"runoob-algorithm-HeapSort.zip"暗示了我们即将探讨的是关于堆排序(HeapSort)的算法。堆排序是一种高效的排序算法,属于比较排序的一种,它利用了计算机科学中的树形数据结构——堆。 堆是一个近似完全...
python 排序算法之HeapSort
C#实现heapSort.rar
C++实现heapSort.rar
C语言实现heapSort.rar
zoj 2665 Heapsort.md