算法
文章平均质量分 87
Ryan-S
奔赴山海 保持热爱
展开
-
三种线性排序:计数排序、基数排序、桶排序
目录前言决策树线性时间排序计数排序 前言 之前学到的归并、快排、堆排序等其实都可以归为比较排序,因为一定要通过数字之间的比较才知道数字的次序。对于堆排序和归并排序,时间复杂度上界都是 O(nlog(n)),对于快速排序,平均到了O(nlog(n))。 决策树 比较排序都可以抽象为像上图一样的完全二叉树。可以表示在给定输入规模的情况下,一个排序算法对所有元素的比较操作。当到达叶节点时,就确定了一个正确的排序。 根据上面的例子可以看出,当比较次数最多的时候就是到达叶子节点的时候。在最坏情况下,任何比较排序都要原创 2021-03-17 16:35:12 · 227 阅读 · 0 评论 -
堆排序和优先队列
目录堆操作维护堆的性质(MAX-HEAPIFY)建堆堆排序算法(HEAP-SORT)优先队列 堆 今天看看堆,这里的堆不是操作系统堆栈的堆,而是一个二叉树的结构。它不仅可以用来实现堆排序,还可以构造一种有效的优先队列。 (二叉)堆是一个数组,也可以被看作是一个近似的完全二叉树。树上的每一个结点对应数组中一个元素。除了最底层外,该树是完全充满的,而且是从左向右填充。 这样我们很容易就能根据下标找到一个节点的父节点下标或子节点下标。 Parent(i): return i/2; LeftChild(i):原创 2021-03-16 20:48:54 · 207 阅读 · 0 评论 -
概率分析和随机算法
目录雇用问题描述概率分析随机算法指示器随机变量雇用问题与指示器 雇用问题描述 一个老板想换掉自己的办公助理,并且决定每次面试一个人,如果当前这个面试者比现在的办公助理好,就雇用他,并且解聘现在的办公助理。 描述成伪代码可以有如下形式: Hire-Assistant(n): best = 0 //假装有最菜的面试者,其实也可以理解为当前助理最菜 for i=1 to n //遍历全部面试者 interview candidate i //取当前面试者 if candidate i is better th原创 2021-03-12 16:19:15 · 495 阅读 · 0 评论