算法及数据结构
Eleven...
这个作者很懒,什么都没留下…
展开
-
排序算法-03快速排序
快速排序文章目录快速排序1. 算法概述2. 图解3. 代码实现(挖坑填位)4. 算法优化4.1 减少因交换元素而创建临时变量4.2 优化枢轴(基准元素)的选取方式4.3 优化小数组时的排序方案4.4 参考博文1. 算法概述快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。快速排...原创 2019-04-15 22:17:14 · 380 阅读 · 0 评论 -
查找算法-01二分查找
二分查找文章目录二分查找1. 算法说明2. 算法原理3. 动图演示4. 代码实现5. 算法变形5.1 查找目标在集合中第一次出现的位置5.2 图解5.3 查找目标在集合中最后一次出现的位置1. 算法说明摘自百度百科:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。从上述说明文字,我们...原创 2019-04-13 09:50:21 · 237 阅读 · 0 评论 -
排序算法-01算法概述
排序算法文章目录排序算法1. 算法概述2. 算法复杂度3. 相关概念4. O,n, log, k 的区别1. 算法概述常见的排序算法可以分为两类,一是基于比较的排序算法,二是不基于比较的排序算法。比较类算法:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类算法:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时...原创 2019-04-13 09:52:58 · 165 阅读 · 0 评论 -
排序算法-02冒泡排序
冒泡排序文章目录冒泡排序1. 算法概述2. 算法原理3. 动图演示4. 代码实现5. 算法优化5.1 减少非必要的比较5.2 鸡尾酒排序(双向冒泡排序)1. 算法概述冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交...原创 2019-04-13 09:54:05 · 137 阅读 · 0 评论 -
排序算法-08归并排序
归并排序文章目录归并排序1. 算法概述2. 算法原理3. 动图演示4. 代码实现1. 算法概述归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。2. 算法原理归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成...原创 2019-04-21 21:53:29 · 170 阅读 · 0 评论 -
排序算法-04插入排序
插入排序文章目录插入排序1. 算法概述2. 算法原理3. 动图演示4. 代码实现5. 算法优化1. 算法概述插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,适用于少量数据的排序。一般来说,插入排序都采用in-place在数组上实现。in-place操作,意思是所有的操...原创 2019-04-17 22:21:14 · 81 阅读 · 0 评论 -
排序算法-05希尔排序
希尔排序文章目录希尔排序1. 算法概述2. 算法原理3. 动图演示4. 代码实现1. 算法概述是直接插入排序算法的一种更高效的改进版本,希尔排序是非稳定排序算法。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。2. 算法原理希尔排序的思想是使数组中任意间隔为h(步长)的元素是有序的。这样的数组也称为h有序数组,也即一个数组是h个互相独立的有序数组交叉编制...原创 2019-04-17 22:22:32 · 308 阅读 · 0 评论 -
排序算法-06选择排序
选择排序文章目录选择排序1. 算法概述2. 算法原理3. 动图演示4. 代码实现5. 算法优化1. 算法概述选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。2. 算法原理首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)...原创 2019-04-19 13:29:20 · 246 阅读 · 0 评论 -
排序算法-07堆排序
堆排序文章目录堆排序1. 算法概述2. 算法原理3. 动图演示4. 代码实现1. 算法概述堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。堆分两种大顶堆:每个节点的值都大于或等于其子节点的值小顶堆:每个节点的值都小于或等于其子节点...原创 2019-04-19 21:05:00 · 115 阅读 · 0 评论