数据结构与算法
戈马书生
签名
展开
-
经典排序算法4——非比较排序(计数排序,桶排序,基数排序)
排序算法关于排序算法的简介请看上一篇文章经典排序算法1——冒泡,选择,插入经典排序算法2——希尔,归并,快速经典排序算法3——堆排序8 计数排序将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。8.1 算法描述循环一遍数组arr,得到数组中的最大值maxInt和最小值minInt。创建一个额外的计数数组count[maxInt - minInt + 1],确保原数组arr中的每一个元素在计数数组中都有位置循环原创 2020-12-03 10:45:23 · 113 阅读 · 0 评论 -
经典排序算法3——堆排序
排序算法关于排序算法的简介请看上一篇文章经典排序算法1——冒泡,选择,插入经典排序算法2——希尔,归并,快速7 堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。二叉树,大顶堆,小顶堆?7.1 算法描述有一个长为n的数组arr.首先把arr数组看成二叉树1.把arr[0~n]数组排序成大顶堆2.把大顶堆的顶即arr[0],与数组的最后一个数进行交换。则现在数组中只有 arr[0 ~ (原创 2020-12-02 20:09:52 · 104 阅读 · 0 评论 -
经典排序算法2——希尔,归并,快速
排序算法关于排序算法的简介请看上一篇文章经典排序算法1——冒泡,选择,插入4.希尔排序希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序实质上是一种分组插入方法。4.1 算法描述有数组arr,数组长度为m;1.确定步长gap(一般取 m/2 ),对数据进行分组。如步长为3,则 {arr[0],arr[3],arr[6],arr[3n],……},{arr[1]转载 2020-12-02 19:30:58 · 93 阅读 · 0 评论 -
经典排序算法1——冒泡,选择,插入
排序算法一 简述1.常见的排序算法主要分为两类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 主要有(冒泡排序,选择排序,插入排序,快速排序,希尔排序,堆排序,归并排序)非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 计数排序,桶排序,基数排序2.不同算法优缺点相关概念:时间复杂度: 排序数据的总的操作次数。反映当n变化时,操转载 2020-11-24 21:08:44 · 100 阅读 · 0 评论