算法
tpgood1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大数据问题
top k问题即在很多数据的情况下选出前k大的数据,数据量可上亿要分情况讨论,如果是堆排序,时间复杂度是O(lgn)级别,,比较次数和交换次数相同,平均为logn/2,可以采用插入排序的办法,只维护一个k的数组,按降序排列,只用在中间插入并删掉超过k的部分,这个时间复杂度为O(n),平均比较次数为O(n/2),移动次数是O(n/2),如果可以做成链表结构,则还能省去移动的开销,而只用在比较完成后修改指针大数据排序如果是上亿的数据,常规的办法:加载到内存并用经典算法是行不通的,内存没办原创 2020-08-17 10:34:38 · 328 阅读 · 0 评论 -
排序算法剖析
前言学习自用,排序算法再回顾,这里就不放代码了正文冒泡排序冒泡是从前往后相邻比较,每一次比较会把当前最大值传到后面,传到最后面以后就不用管最后面的了因为他是只比较相邻的而且是从前往后的,所以适合用在链表的排序,(因为单向链表从前往后走,且相邻之间很容易用一个next指针比较)从前往后这个特性应该代码的局部性也比较好吧?时间复杂度是O(n^2),看代码可以说是两个循环所以是O(n^2),具体推导TODO可以看出冒泡排序除了相邻比较以外,还会用到很多次相邻的交换没有用到任原创 2020-07-29 19:38:03 · 172 阅读 · 0 评论 -
KMP算法挖坑
左神的KMP代码#include<iostream>#include<string>using namespace std;int* getNextArray(string str2){ if(str2.size() == 1){ int* next = new int[1]; next[0] = -1; return next; } int...原创 2020-05-05 15:00:50 · 181 阅读 · 0 评论 -
二叉树先中续后续遍历算法代码解析
转载自https://blog.youkuaiyun.com/zhangxiangdavaid/article/details/37115355并加上自己理解中序遍历的递归定义:先左子树,后根节点,再右子树。如何写非递归代码呢?一句话:让代码跟着思维走。我们的思维是什么?思维就是中序遍历的路径。假设,你面前有一棵二叉树,现要求你写出它的中序遍历序列。如果你对中序遍历理解透彻的话,你肯定先找到左子树的最下...转载 2020-04-25 23:52:51 · 545 阅读 · 0 评论 -
快速排序三种实现
转自https://blog.youkuaiyun.com/qq_36528114/article/details/78667034并加以修改快速排序的递归实现void QuickSort(int* array,int left,int right){ assert(array); if(left >= right)//表示已经完成一个组 { return; } int ind...原创 2020-04-25 11:16:49 · 546 阅读 · 0 评论
分享