算法
Coder微观
这个作者很懒,什么都没留下…
展开
-
插入排序
插入排序是一个时间复杂度为O(n2n2n^2)的一种排序算法。 输入: n个数的一个序列【a1a1a_1,a2a2a_2,a3a3a_3, … ,anana_n】 输出: 输入序列的一个排好序的排列【a′1a1′a'_1,a′2a2′a'_2,a′3a3′a'_3, … ,a′nan′a'_n】 插入排序就如同上图一样,我们手里有一手扑克牌。开始时,我们的左手为空,且牌都在桌子上,牌面向...原创 2018-09-08 12:03:36 · 111 阅读 · 0 评论 -
归并排序
归并排序是利用分而治之的思想,递归地来对数据进行排序的方法,其时间复杂度是O(nlognnlognnlogn)。 算法主要是分成两部分,一是将数据进行分割,二是将分割后的数据进行合并。 我们先考虑合并的情况,利用上一篇插入排序的扑克牌思想,在这里做这样的假设: 假设我们已经将两堆牌面朝上的纸牌排好序了,最小的牌在最上面,最大的在最下面。现在需要我们将这两堆牌合并成有顺序的一堆牌。那么我们的基...原创 2018-09-08 16:17:01 · 103 阅读 · 0 评论 -
快速排序
快速排序是一种最坏情况时间复杂度为Θ(n2n2n^2)的排序算法,其最坏情况的时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,在面试过程中也会经常被提到,它的平均性能非常好。它的期望时间复杂度为Θ(nlognnlognnlogn),而且Θ(nlognnlognnlogn)中隐含的常熟因子非常小;另外,它还能进行原址排序(In-place sort :在排序算法中。如果输入数组中仅有常熟...原创 2018-09-10 19:47:23 · 97 阅读 · 0 评论 -
二分查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分查找的基本流程是在一个数组 R[low,high] 中,选择R的中点 mid = (low+high)/2,要查找的数为 key,比较key与mid的大小;如果key小于mid,那么查找区间变成 R[low,mid-1],如果key大于m...原创 2018-10-09 14:00:24 · 176 阅读 · 0 评论