Algorithm
暂代
须知少日拿云志,曾许人间第一流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
改良版的冒泡排序算法
改良版冒泡排序原创 2017-12-06 13:06:27 · 668 阅读 · 0 评论 -
红黑树笔记
红黑树的五条性质:树中的每个结点颜色不是红的,就是黑的;根结点的颜色是黑的;所有为 NULL 的叶子结点的颜色是黑的;如果此结点是红的,那么它的两个孩子结点全部都是黑的;对于每个结点,从该结点到到该结点所有子孙结点的所有路径上包含有相同数目的黑结点;插入操作当创建一个红黑树或者向已有红黑树中插入新的数据时,只需要按部就班地执行以下 3 步:由于红黑树本身是一棵二叉查找树,...原创 2019-06-25 09:28:31 · 255 阅读 · 0 评论 -
如何在10亿数中找出前1000大/小的数?
一、内存空间足够大分治法随机选一个数flag,然后对整个数组进行分割,会得到两部分,前一部分的数都大于flag,后一部分的数都小于flag。示例:如果说前一部分总数大于1000个,那就继续在前一部分进行分割。如果前一部分的数小于1000个,那就在后一部分再进行分割,寻找剩下的数。利用分治法,对左边或者右边进行循环分割,直到找够Top 1000。时间复杂度 :O(N)计算过程 :我们...原创 2019-06-01 20:03:24 · 1037 阅读 · 0 评论 -
求最小接近斐波那契数的距离
今天在做一个算法题的时候,遇到了一个奇怪的bug,在这里记录一下,这个bug由这个算法题引入。题目描述:给定一个数,求这个数和上一个或者下一个斐波那契数列中数的距离。例如:输入10,10的上一个斐波那契数是8,下一个斐波那契数是13,由于10和8离的最近,所以输出的距离就是2input:10ouput:2格式要求:输入一个数,数的范围(1~1000000)输出一个整数...原创 2019-05-27 22:01:07 · 1257 阅读 · 0 评论 -
单链表的逆置算法解析
问题描述:比方说,一个不带头节点的单链表原来从头到尾存储的是(1, 2, 3, 4, 5),逆置后链表从头到尾存储的是(5,4,3,2,1)解决思路:我暂时想到的有三种解法: 1)从头到尾依次访问旧的链表节点,每访问一个,就将这个节点的数据用头插的方法插入到新的链表中,这样当旧的链表访问完毕时,新的链表就构造成功了,然后释放掉原来的链表空间,将头指针指向新的链表头节点。 2)和第一个...原创 2018-10-31 12:44:46 · 20726 阅读 · 5 评论 -
STL常用算法总结(持续更新)
STL中的谓词是什么? STL中的谓词是一个可调用的对象,其返回结果是一个能用作条件的值。标准库算法所使用的谓词分为两类:一元谓词(意味着它们有一个参数)和 二元谓词(意味着它们有两个参数)。接受谓词参数的算法对输入序列中的元素调用谓词。因此,元素类型必须能转换为谓词的参数类型。建议:本文中很多地方用到了Lambda表达式,如果不清楚的读者可以参考:C++可调用对象文章目录一、排序1....原创 2019-04-21 14:49:40 · 852 阅读 · 0 评论 -
字符串切分的几种方式讲解
开发中,我们常常要用到 “ 字符串切分 ” 这种操作,比如:命令行的处理,消息格式的处理等。下面我讲解几种C/C++常用的字符串切分方式一、自定义如果项目这方面的需求比较简单,那么可以自己写一个字符串切分的函数#include <iostream>#include <string> // std::string#include <vector>...原创 2019-03-26 14:52:56 · 4825 阅读 · 0 评论 -
顺序表简易教程
顺序表顺序表的各项操作我采用静态的方式讲解,因为我觉得如果需要支持动态扩容的线性结构,那么链表会是一个更好的选择,所以我通常使用顺序表结构只使用静态的就足够了。概述顺序表可以分为静态顺序表和动态顺序表两种,静态顺序表不可以扩容,一旦创建,它的容量就写死了,是多大就是多大,而动态顺序表则可以扩容。通常情况下,动态顺序表使用价值比较好一些,但是这也不一定,因为有时候我们确认了某些结构的空间不...原创 2018-10-19 17:26:19 · 604 阅读 · 0 评论 -
泛型编程实现结构Set
#include &lt;iostream&gt;//采用泛型编程的方式实现了一个支持交集,并集,差集,添加,删除方法的 set//规定这个集合不能包含相同元素//实现一个不包含重复数值域单链表//插入的时候按序插入//链表的节点template&lt;class T&gt;struct ListNode{ ListNode&lt;T&gt;* _next; T _ele...原创 2018-10-16 14:29:54 · 385 阅读 · 0 评论 -
C++STL中sort用法介绍
自定义STL中sort的排序规则前情提要:0、要使用sort,首先需要包含头文件&amp;lt; algorithm&amp;gt;1、sort函数可以指定两个参数,也可以指定三个参数。(1)第一个是要排序的数组的起始地址。(2)第二个是结束的地址(最后一位要排序元素的后一位的地址)(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是升序排序。2、...原创 2018-09-29 20:30:22 · 14872 阅读 · 0 评论 -
八种排序算法实现和优化方案_C
注:由于时间关系,本文刚开始只列出这些排序算法的代码实现以及优化版本的代码实现,本篇内容会在短期内持续更新,加上我个人对原理的理解和对代码的讲解,直到本篇趋于完美。一、插入排序插入排序的排序原理就决定了它的适用于以下两种场景:所排序的数据量比较小所排序的序列接近有序 空间复杂度:O(1) 最优时间复杂度:O(N) 最差时间复杂度:O(N^2)void ...原创 2018-03-22 12:40:56 · 746 阅读 · 0 评论 -
两个线程打印不同类型的字母
一、题目描述:两个线程分别打印26个英文字母的元音字母和辅音字母,分别按照字母序输出。二、解题思路:(1) 如果要求输出一行感觉看代码都可以看明白了…(2)如果要求输出两行由于线程之间共享全局变量,所以可以将26个字母保存到一个全局数组中,并且保存当前访问到数组元素的下标。然后再创建两个数组分别保存元音字母和辅音字母,不同的线程添加不同类型的字母到对应的字母表中,最后遍历打印元音字母表...原创 2019-06-28 23:59:48 · 392 阅读 · 0 评论
分享