文章 2023-09-26 来自:开发者社区

【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序

排序的概念及引用‍排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全....

【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序
文章 2023-09-25 来自:开发者社区

【数据结构】—堆排序以及TOP-K问题究极详解(含C语言实现)

☸️一、前置知识:两种调整方法         向上调整方法          堆的向上调整方法将新插入的节点从下往上逐层比较,如果当前节点比其父节点大(或小,根据是大根堆还是小根堆),则交换这两个节点。一直向上比较,直到不需要交换为止。这样可以保证堆的性质不变。   具体步骤如下:  ....

【数据结构】—堆排序以及TOP-K问题究极详解(含C语言实现)
文章 2023-08-08 来自:开发者社区

[数据结构 -- 手撕排序算法第四篇] 堆排序,一篇带你搞懂堆排序

1、堆的应用 -- 堆排序堆是一个完全二叉树,完全二叉树用数组存储数据最优。堆排序即利用堆的思想来进行排序,总共分为两个步骤:1、建堆升序:建大堆降序:建小堆2、利用堆删除的思想来进行排序建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。1.1 堆排序的思路分析我们本篇文章使用小堆进行讲解,小堆排序是降序。对堆还不是很了解的同学可以浅看一下堆的那篇文章:戳这里即可跳转1、我们....

[数据结构 -- 手撕排序算法第四篇] 堆排序,一篇带你搞懂堆排序
文章 2023-08-04 来自:开发者社区

数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2

三、选择排序每一趟在后面n-i-1个元素中选取最小的元素,作为有序序列的第i个元素,直到第n-1趟排序完成。最重要的还是堆排序。1.简单选择排序①算法执行过程可视化演示:②算法代码:void SelectSort(ElemType A[], int n){ for(int i = 0; i < n-1; i++){ //一共进行n-1趟 int min = i; ...

数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2
文章 2023-08-04 来自:开发者社区

数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)1

一、插入排序插入排序包括直接插入排序,折半插入排序、希尔排序。直接插入排序就是简单粗暴的插入,折半排序是利用了二分查找的插入排序,希尔排序是先局部后整体的插入排序。其算法的主要思想就是每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子序列,直到全部记录插入完成。1.直接插入排序①算法的执行过程:对于待排序表L[1...n],假设在某个状态下,待排序元素为L(i),则L[1...i-1]....

数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)1
文章 2023-08-03 来自:开发者社区

【数据结构】TopK,堆排序, --堆的初始化与应用

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。个人主页:主页链接算法专栏:专栏链接     我会一直往里填充内容哒!LeetCode专栏:专栏链接目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出代码仓库:Gitee链接点击关注=收获更多优质内容书接上回,本章节也是关于树的内....

【数据结构】TopK,堆排序, --堆的初始化与应用
文章 2023-07-26 来自:开发者社区

【数据结构与算法】堆的应用:堆排序和topk问题

一.堆排序我们知道冒泡算法的时间复杂度是O(N^2),在数据量很多的时候,N^2是个很可怕的数字,二分算法的时间复杂度是O(logn),但是二分算法有限制条件,实用性并不高,那怎样才能高效实用的排序呢?堆排序就能很好解决上述问题,堆排序的时间复杂度是O(logn),也没啥限制条件,可以实现高效排序。这里要注意,排升序要建大堆,排降序要建小堆;1.假设排升序,所以建大堆;2.堆建好后,定义一个 e....

【数据结构与算法】堆的应用:堆排序和topk问题
文章 2023-07-14 来自:开发者社区

数据结构---TopK和堆排序

向下调整算法 首先声明这个算法的使用条件,该算法适用于除了堆顶外的其他部分都满足小堆或大堆的条件时,可以使用,简单来说就是pop堆顶的时候可以使用 使用的原理也相当简单,假设我们这里是小堆,那么堆顶元素被弹出,此时堆中第二小的元素一定是这个堆顶元素的儿子,那么我们就让堆的最后一个叶子来充当这个新的堆顶,这样可以在保持堆整体的构造不变的前提下还能把堆顶元素弹出,紧接着就让这个堆顶元素和下面的儿...

数据结构---TopK和堆排序
文章 2023-07-13 来自:开发者社区

【数据结构】向上调整建堆和向下调整建堆的天壤之别以及堆排序算法

向上调整void AdjustUp(HPDataType* a, int child) { int parent = (child - 1) / 2; while (child > 0) { if (a[child] > a[parent]) { Swap(&a[child], &a[parent]); child = paren...

【数据结构】向上调整建堆和向下调整建堆的天壤之别以及堆排序算法
文章 2023-07-10 来自:开发者社区

数据结构__<八大排序> __插入排序 |希尔排序 |选择排序 |堆排序 |快速排序 |归并排序(C语言实现)

前言目录插入排序 //直接插入排序 void InsertSort(int* a, int n) { // i的取值范围:[0,n-2] for (int i = 0; i < n - 1; i++) { //每一趟排序 int end = i; int tmp = a[end + 1]; //将tmp视为插入的数字 while (end >...

数据结构__<八大排序> __插入排序 |希尔排序 |选择排序 |堆排序 |快速排序 |归并排序(C语言实现)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

算法编程

开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。

+关注