原文:算法与数据结构(十四) 堆排序 (Swift 3.0版)

上篇博客主要讲了冒泡排序 插入排序 希尔排序以及选择排序。本篇博客就来讲一下堆排序 Heap Sort 。看到堆排序这个名字我们就应该知道这种排序方式的特点,就是利用堆来讲我们的序列进行排序。 堆 其实就是一种有着特定结构的完全二叉树,下方将会详细的介绍一下堆。本篇博客讲的就是堆排序,首先我们先对大顶堆,小丁堆进行介绍,然后构建堆,最后利用堆的特性对我们的数据序列进行排序。 下方我们依然是先给出相 ...

2016-12-12 09:36 0 3263 推荐指数:

查看详情

算法数据结构(十七) 基数排序(Swift 3.0)

前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关。今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比较高的。今天就来聊一下基数排序算法的原理以及代码的具体实现。 一、基数排序算法示意图 ...

Wed Dec 21 17:41:00 CST 2016 0 3752
算法数据结构(十五) 归并排序(Swift 3.0)

上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容。归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小。当拆分的数组中只有一个元素时,则这个拆分的数组是有序的。然后我们将这些有序的数组进行两两合并,在合并过程中进行比较,合并生成 ...

Fri Dec 16 18:04:00 CST 2016 0 1814
算法数据结构(十六) 快速排序(Swift 3.0)

上篇博客我们主要聊了比较高效的归并排序算法,本篇博客我们就来介绍另一种高效的排序算法:快速排序。快速排序的思想与归并排序类似,都是采用分而治之的方式进行排序的。快速排序的思想主要是取出无序序列中第一个值,然后通过比较将比该值小的元素放到该值的前方,将比该值大的元素放在该值的后方。这样一来该值前方 ...

Mon Dec 19 17:38:00 CST 2016 0 3713
算法数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序Swift3.0

本篇博客中的代码实现依然采用Swift3.0来实现。在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找、折半查找、插值查找、Fibonacci查找,还包括数结构的二叉排序树以及平衡二叉树的构建与查找,然后还聊了哈希表的构建与查找。接下来的几篇博客中我们就集中的聊一下常见 ...

Thu Dec 08 18:47:00 CST 2016 5 4860
数据结构算法之堆与堆排序

  在数据结构中,堆其实就是一棵完全二叉树。我们知道内存中也有一块叫做堆的存储区域,但是这与数据结构中的堆是完全不同的概念。在数据结构中,堆分为大根堆和小根堆,大根堆就是根结点的关键字大于等于任一个子节点的关键字,而它的左右子树又分别都是大根堆;小根堆与大根堆恰好相反。在C++的STL中优先队列 ...

Fri Aug 21 05:16:00 CST 2015 1 1841
常用数据结构算法 : 堆排序

  在一次面试当中,面试官问到了自己关于堆排序的一些细节,之前在整理各种高级排序的时候,有看过堆排序,然而在现场要给面试官讲解排序的原理的时候,发现自己懵逼了,所以还是需要特地写一篇随笔来记录堆排序的整个原理和过程,这里借鉴了百度知道里头的堆排序的讲解图。   首先我们要了解什么是堆排序,其排序 ...

Wed Sep 20 22:59:00 CST 2017 0 1052
数据结构算法——堆排序

目录 基本介绍 大顶堆举例 小顶堆举例 排序说明 基本思想 堆排序步骤图解 步骤一:构造初始堆 步骤二:将堆顶元素与末尾元素进行交换 思路总结 代码实现 步骤推演 ...

Sun Sep 12 18:57:00 CST 2021 1 205
数据结构算法堆排序

树、二叉树的简单介绍 可以用数组表示一颗二叉树(数组下标从0开始) 左子节点下标是 2n+1 (n是父节点下标) 右子节点下标是 2n+2 (n是父节点下标) 父节点下标是 ...

Sat Aug 07 02:53:00 CST 2021 0 118
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM