Alogrithms 4th
数据结构与算法总结,排序,查找,BFS,DFS等经典算法
CSMrZ
这个作者很懒,什么都没留下…
展开
-
查找中的数据结构之无序表和有序表
查找引入 在大数据时代,如何在海量数据中快速检索到自己想要的数据?首先需要设计高效的数据结构来表示这些数据,要存储的数据一般分为两个部分,键和值,如何根据键值去安排这些数据尤为重要,首先我们想到线性存储,即利用表的形式线性存储,线性查找,即符号表这种数据结构. 符号表 符号表线性存储数据,但是根据在插入操作过程中是否保证数据有序分为无序表和有序表: 0.无序表 无序表API(仅实现了...原创 2018-09-02 15:52:47 · 2668 阅读 · 0 评论 -
索引优先队列
索引优先队列 上篇讲述了优先队列,一种能够快速访问最大元素或最小元素的数据结构,但是考虑这样一种情况,公司按姓名录入员工信息,并按照薪水加入了优先队列,某员工薪水需要更改,假设薪水排名为n,那么我们需要怎样操作呢?首先将前n名员工出列,然后改正第n名薪水,最后将这n名员工入列,操作太复杂,不符合程序员追求性能(懒)的特性,于是想到将优先队列的元素加一个索引,可以随机访问.这种加入索引的优先队列就...原创 2018-08-31 18:46:21 · 846 阅读 · 0 评论 -
优先队列总结
优先队列 引入 在生产调度中,事件都有优先级,那么如何快速的调度最高优先级的事件成为一件需要考虑的事情。调度中有两种操作,第一种是调度最高级事件,第二种是插入事件,那么优先队列这种数据结构完美解决了这两个操作,在优先队列中这两种操作完成的任务就是删除队列中最大值和插入新值。 优先队列初级实现 那么优先队列如何实现呢?简单的可以用数组来实现,有以下两种方法: 1.数据插入随意,数据...原创 2018-08-28 10:43:09 · 2928 阅读 · 0 评论 -
经典排序算法总结
排序算法的应用 0.利用算法的整体对各种数据排序 在工商业中的各种交易数据,职场,学校中各种员工学生的信息等等.一般涉及数据存储的地方都会有排序算法的应用 1.利用算法中的一部分解决某些问题 a.逆序对数量与插入排序交换次数的对应关系 b.中位数(或寻找第k小的值问题)与快排中切分的思想. 2.较复杂算法中应用到排序算法 a.优先队列与调度问题 b.微积分曲线下区域面积,优先...原创 2018-09-02 15:06:40 · 218 阅读 · 0 评论 -
三切分快速排序
三切分快速排序 在普通的快速排序中,如果存在一组待排序的子数组全部为重复的元素,我们还对其进行划分排序,这样性能会下降,那么,如何改进存在大量重复元素的数组排序的性能呢?E.W.Dijkstra这个算法界无处不在的大佬提出了荷兰国旗问题,引出了三项切分快速排序的方法。这种方法与普通快排所区分的地方在于划分时不是划分成不大于和不小于两部分,而是划分成小于,等于,大于三部分,这样重复的值就可以不用再...原创 2018-08-23 09:17:10 · 1712 阅读 · 0 评论 -
归并排序总结
归并排序 主要思想 归并排序主要将数组分成等量的两部分,然后对每一部分进行排序,然后再将他们合并。与快速排序一样也是利用了分治法的思想,但是不同的是划分方式不同。 数组排序过程 用以下数组来进行描述: 3 4 10 9 21 18 将数组分成等量的两部分 3 4 10 和9 21 18 然后继续划分,直至划分成单个元素,可以用树形结构进行表示 代码整理 那么分治...原创 2018-08-24 14:12:44 · 343 阅读 · 0 评论 -
快速排序
快速排序 快速排序是一种利用了分治法的排序方法,在数组中寻找一个基准量(数组第一个值或者随机选取某个值)每次循环过程中,将待排序的数组分成两组,小于基准量的值位于数组的左侧,大于基准量的值位于数组的右侧,这样每次循环均能够寻找到基准量在数组中的正确位置。 快速排序主要的步骤就是,使用基准量划分数组,然后对划分的数组进行排序。 例如数组: 4 3 5 11 3 7 2 9 将第一个值4当成...原创 2018-08-22 15:38:42 · 199 阅读 · 0 评论 -
Algorithm 4th------初级排序算法总结
排序算法 在日常生产生活中,将杂乱的一组数据转换成有顺序的另一组数据所使用的算法叫做排序算法.那么最基础的排序算法都有哪些? 0.冒泡排序 主要思想:循环比较相邻数据并交换符合一定条件(升序则为靠前数据大于靠后数据)的数据,第i次循环都会使第i小或第i大的数据交换到正确的位置. 伪代码 for i=1 to a.length-1: for j=a.length t...原创 2018-08-21 21:01:45 · 224 阅读 · 0 评论