• 2024-06-23数据结构/排序/堆排序 --- 逻辑讲解、代码实现、图形展示
    一、总体逻辑:    1.写一个交换的函数swap备用    2.写一个维护堆的性质的函数heapify备用    3.数组-> 堆(不明白的别急,后面会详细解释)    4.维护整个堆(看不懂别急别急别急)    5.堆顶和堆底的最后一个元素互换(不明
  • 2024-06-21手撕排序2--选择排序(直接选择+堆排序
    目录:1.直接选择排序  的实现及分析2.堆排序的实现及分析1.直接选择排序1.1基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。1.2一次排序-->将最大值放在第一个,最小值放在最后一个代码实现:#incl
  • 2024-06-20堆排序|维护堆和建堆
    堆可以看作各个元素之前有前后续的特殊数组,当然也是一颗完全二叉树。设堆heap的元素为heap[1,2,3,...,heap_size]。注意0<=heap_size<=heap.len,并且节点从1开始计数(便于计算)。1.寻找节点1.1寻找父节点若节点编号为i
  • 2024-06-11数据结构--第十章--内排序
    插入排序直接插入排序是一种稳定的排序方法快速排序递归调用树与性能分析快排算法实际上就是对枢轴的左右分区进行递归操作高效实现的快速排序算法是不稳定的且很复杂堆排序堆排序是不稳定的排序方法归并排序基数排序
  • 2024-06-09数据结构学习笔记-堆排序
    堆排序算法的设计与分析问题描述:设计并分析堆排序【前置知识:什么是堆?】堆(Heap)是一种特殊的树形数据结构,它满足以下两个条件之一:最大堆(MaxHeap):每个节点的值都大于或等于其子节点的值。换句话说,根节点的值是整个堆中最大的。最小堆(MinHeap):每个节点的值都小于或等于其
  • 2024-06-078644 堆排序
    Description用函数实现堆排序,并输出每趟排序的结果输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式第一行:初始建堆后的结果其后各行输出交换堆顶元素并调整堆的结果,数据之间用一个空格分隔输入样例10548093267
  • 2024-06-02堆排序-java
    这次主要讲了堆排序和堆的基本构造,下一期会详细讲述堆的各种基本操作。文章目录前言一、堆排序1.题目描述2.堆二、算法思路1.堆的存储2.结点下移down3.结点上移up4.堆的基本操作5.堆的初始化三、代码如下1.代码如下:2.读入数据:3.代码运行结果总结前言
  • 2024-06-01[排序算法]选择排序+堆排序全梳理!
    目录前言1.直接选择排序基本思想具体步骤:动图演示代码实现直接选择特性总结:2.堆排序向下调整算法任意树调整为堆的思想堆排序堆排序的基本思想:动图演示选择排序的特性总结:3.总结前言今天我们将学习排序算法中的直接选择排序和堆排序,它们的基本思想都是每一
  • 2024-05-31堆排序(Heap sort)
    堆排序堆排序是简单选择排序的改进,改进点为如何让减少在选择的过程中比较的次数。1.堆的定义    堆是具有以下性质的完全二叉树:每个结点的值都大于(小于)等于其孩子节点的值,称为大根堆(小根堆)。例:   由堆的定义得知堆顶元素一定为最大(大根堆)或者最小值(小根堆)。
  • 2024-05-27七大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、归并排序、快速排序
    以下内容转载自文章1.插入排序步骤:1.从第一个元素开始,该元素可以认为已经被排序2.取下一个元素tem,从已排序的元素序列从后往前扫描3.如果该元素大于tem,则将该元素移到下一位4.重复步骤3,直到找到已排序元素中小于等于tem的元素5.tem插入到该元素的后面,如果已排序所有元
  • 2024-04-13排序算法
    排序算法1.排序算法定义:排序算法是一种将数据元素按特定顺序(通常是升序或降序)排列的算法。排序是计算机科学中最基本的操作之一,用于数据组织和优化搜索算法等。2、排序算法分类快速排序归并排序堆排序冒泡排序快速排序:快速排序是一种高效的分治排序算法,通过选定一个'
  • 2024-04-10(Java)数据结构——排序(第一节)堆排序+PTA L2-012 关于堆的判断
    前言本博客是博主用于复习数据结构以及算法的博客,如果疏忽出现错误,还望各位指正。堆排序(HeapSort)概念堆排序是一种基于堆数据结构的排序算法,其核心思想是将待排序的序列构建成一个最大堆(或最小堆),然后将堆顶元素与最后一个元素交换,再将剩余元素重新调整为最大堆(或最小堆),重复
  • 2024-04-08【数据结构与算法】:堆排序和选择排序
    1.堆排序堆排序是一种比较复杂的排序算法,因为它的流程比较多,理解起来不会像冒泡排序和选择排序那样直观。1.1堆的结构要理解堆排序,首先要理解堆。堆的逻辑结构是一棵完全二叉树,物理结构是一个数组。(如果不知道什么是二叉树,请前往我的主页查看)。所以堆是一个用数组表
  • 2024-04-06堆排序算法
    问题描述现有一组数据:23,45,18,11,13,79,72,25,3,17。请使用快速排序算法将它们按照从小到大的顺序排列。算法思想(1)将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;(2)将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端;(3)重新调整结构,使其满足堆定义,然后继续
  • 2024-04-05堆火熠熠:燃烧吧,我们的数据结构之魂
    “堆蕴秩序:堆排序的诗篇与画卷”前置知识简要:堆堆(heap)是一种满足特定条件的完全二叉树,主要可分为两种类型,如图8-1所示。小顶堆(minheap):任意节点的值其子节点的值。大顶堆(maxheap):任意节点的值其子节点的值。`/*初始化堆*///初始化小顶堆priority_queue<int,
  • 2024-04-05九、算法-排序-堆排序
    常见六大排序:冒泡、选择、插入、快速、归并、堆。在了解堆排序之前,需要了解数据结构-二叉树的知识。二叉树:树中的每个节点下最多只有两个叶子节点;根节点:二叉树的首个节点;叶子节点:非根的节点;父节点-子节点:父节点下方归属的为子节点,是相对而言的关系,在顺序存储的数据结构里
  • 2024-04-04【算法】堆排序
    完全二叉树在学习堆排序之前,我们先对完全二叉树有一个基本的了解。构建过程:数据从上到下,从左到右依次进行构建。我们给出以下数据 我们构建出以下完全二叉树我们观察每个节点的下标,会发现以下规律。 N[i]的左子树:N[2i+1] N[i]的右子树:N[2i+2] N[i]的父节点:N
  • 2024-04-02深入理解数据结构第二弹——二叉树(2)——堆排序及其时间复杂度
    看这篇前请先把我上一篇了解一下:深入理解数据结构第一弹——二叉树(1)——堆-CSDN博客前言:相信很多学习数据结构的人,都会遇到一种情况,就是明明最一开始学习就学习了时间复杂度,但是在后期自己写的程序或者是做到哪个需要判断时间复杂度的题时,仍然判断不出来时间复杂度是多少,今
  • 2024-03-28排序算法 - 堆排序
    文章目录目录文章目录前言1.堆排序原理2.堆排序实现 总结前言大家好,今天给大家介绍一下常见排序算法中的堆排序(填坑)1.堆排序原理堆排序是一种基于二叉堆数据结构的排序算法,它利用堆的性质进行排序。堆是一种完全二叉树,分为最大堆和最小堆两种类型。在
  • 2024-03-24【算法】堆排序
    1.堆排序简介堆排序(heapsort)是由J.W.J.Williams于1964年发明的。是一种基于比较的排序算法,和选择排序一样,堆排序将数据序列分为已排序区域和未排序区域两部分。通过从未排列区域中获取最大元素并将其插入已排序区域,迭代这个操作来缩小未排序区域。与选择排序不同的
  • 2024-03-23java数据结构与算法基础-----排序------堆排序
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录堆排序是利用堆(数据结构)设计的排序算法,属于选择排序,最坏,最好,平均时间复杂度均为O(nlogn),不稳
  • 2024-03-19【堆排序】(大根堆)
    敬信仰赤诚,敬少年滚烫的情钟voidheapify(inta[],intn,inti){//根据当前节点i进行堆调整,保证以i为根节点的子树符合最大堆的性质intlargest=i;//假设当前节点为最大值的索引intleft=2*i+1;//计算左孩子节点索引intright=2*
  • 2024-03-17【算法与数据结构】堆排序&&TOP-K问题之深入解析二叉树(三)
    文章目录
  • 2024-03-12408重难点总结汇总
     数据结构:栈:B、B+树:随机存取和随机查找的区别:随机存取是指访问存储设备中的数据,而随机查找是指在数据集合中查找特定数据项。 B,B+树支持随机查找。顺序查找和随机查找的区别:顺序查找是无论什么情况都是顺序的随机查找是依次查找数据项,与给定初始值有关散列表
  • 2024-02-22快排-归并-堆排序
    概述排序算法算是最经典的算法了,只要你学习算法,就永远也离不开他,常用的排序算法有:冒泡排序插入排序希尔排序桶排序计数排序计数排序快速排序归并排序堆排序这些排序大致特点如下:其中最重要,也最复杂的三种排序,分别是:快速排序归并排序堆排序一.快速排序1.大