自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

转载 算法 排序乐园 堆与堆排序

二叉堆的性质父节点的键值总是大于等于(或小于等于)字节点的键值父节点的键值总是大于等于的堆叫做最大堆,反之叫最小堆 堆的存储形式下图中任何一个点 i,其父节点的下标是 (i-1)/2点i的两个子节点的下标分别是 2i+1 与 2i+2 堆的操作 - 插入删除在数组结尾增加一个元素: 先在对应位置插入元素,再重新对堆排序删除第一个元素:先删除元素,然后将剩下来的堆重新排序 在数组

2017-12-15 21:40:59 231

原创 算法 (排序乐园Lv-2) 插入排序代码实现

游乐项目-2- 插入排序假设数组下标为a[0…n-1]初始时a[0]自成一个有序区,无序区为a[1] ~ a[n-1] ,令i=1将a[i]插入到前面的a[0] ~ a[i-1]的有序区里,形成a[0] ~ a[i]的有序区,i++重复执行第二步直到数组全部有序 代码实现-1void Insertsort_1(int a[], int n) { int i, j, k;

2017-12-07 23:57:57 205

原创 算法 (排序乐园Lv-3) - Qsort代码实现

游乐项目 - 1 - qsort分析以及代码实现首先明白,流程是在不断重复排序分区的分区过程,将比这个数大的全放到它右边,小于或等于它的全放到它的左边。再对左右区间重复第二步,直到各区间只有一个数。Step-1:假设现在以这样的数组进行排序分区: (1).首先将a[0]备份,再定义出一个i=0 -> 下界,一个j=长度-1 ->上界(2).从后开始向前,找一个小于等于X的数,[8]号

2017-12-07 09:34:02 251

原创 算法 渐进 大θ定理 / 实例分析

定义:f(n)=O(g(n))成立 <-> 有自然数c与n0 使得对于所有n>n0的时候有f(n)< c*g(n)常规函数的O, Ω,θ均是本身[线性函数分析] f(n) = 3n+2 利用定义方法证明时间复杂度 = O(n) f(n) = 3n+2 < 4n 在n>2的时候成立 因此 f(n) 的时间复杂度 = 4n的时间复杂度 = O(n)[平方函数分析] f(n) =10n

2017-12-07 04:30:49 680

原创 数据结构 线性表/链表

-Introduction: 数据域 + 指针域 = 节点(Node)-每个node仅仅包含一个指针,因此叫单链表 -头指针就设置成这个链表的名字,就算是空链表也是需要头指针的设置一个头结点 -> 放在第一个节点之前,可以拿来存链表的长度头结点不是必须的如果有头结点,头指针就指向头结点,否则就指向第一个nodetypedef struct xiaohan{ datatype da

2017-12-07 02:43:51 166

原创 数据结构 线性表 / 顺序存储结构

线性表的顺序存储与非线性存储: - 线性存储方式找一块连续的内存,将数据元素依次存放在这块连续内存之中 - 顺序存储你需要知道一个起始位置以下的内容 - 都只建立了一个struct,利用struct里面的array结构描述顺序型线性表的构造与布局在这样的一种构造里,线性表指的是一整个struct结构同时一个list=一个struct我们说的下标 / 位置 指的是struct里面数组的下

2017-12-07 01:42:41 218

原创 [编程基础题总结]

由于instream.get可能会出错,因此在使用instream.get时候,用while(!instream.fail()) 来循环get此外 instream.fail|需要一个起始状态,因此总是在上面的while 开始之前先执行一次instream.get再执行循环(这种几百年前的错误我居然还会再犯…难以置信…)数组: 在initialisation/定义/创建 的时候不仅要写[ ]

2017-12-06 10:27:45 129

翻译 Semaphore / 信号计数量[Version-2] / Sema的工作原理

Introduction : Semaphore(后面简称Sema)是在多线程锁中常常用到的锁的一种STEP-1-生成一些Sema 显然一般情况下我们不会只用一个Sema,下面是示范如何生成一个集合的Sema并将集合的id返回创建semaphore的集合:semget() - 返回Sema集合的id#include <sys/sem.h>int semget(key_t key, int nse

2017-12-04 07:48:34 320

原创 算法 程序步 / 由程序步判断程序高效低效

-Introduction:上一个例子里面,我们是利用操作计数的方法,来计算时间复杂度,但是忽略了其他步骤 -Introduction:在统计执行步数的过程中,要考虑到函数中所有部分的时间开销。任何行为都要统计案例:利用count统计一个函数的执行步数template<class T>T Sum(T a[], int n){ T tsum = 0; count++; //

2017-12-01 09:48:49 3836

原创 算法 第二章 时间复杂度与空间复杂度

时间复杂度定义: 进行算法分析时:所有语句在一起的总的操作T(n)是关于数据规模n的一个函数进而T(n)随着n的变化情况确定T(n)的数量级算法的时间复杂度,记作T(n)= O(f(n)) 它表示随着数据规模n的增大,算法执行时间的增长率与f(n)的增长率f(n)是数据规模n的一个函数这样用O来体现算法时间复杂度的方法,叫做大O记法。 随着数据规模n的增大,T(n)增长最为缓慢的的

2017-12-01 08:12:09 217

原创 数据结构与算法C++ 第二章 练习题 Part-B (排序乐园升级版)

-Introduction: 最好的操作与最坏的操作,期望的操作数量- 最好的操作计数,当然就是min(operation-p(I)) 所有操作计数里面计数次数最少的那一次- 最差的操作计数就是max(operation-p(I)) 所有操作计数里面计数次数最多的那一次-平均操作计数: 解释: 这里面的p(I)代表这一次操作出现的概率 * 这一次操作计数假如所有的操作是等可能的出现

2017-12-01 03:57:20 212

原创 数据结构,算法与应用 第二章 练习题 Part-A(初级排序乐园) / 简单的内存消耗判断

练习: 解决问题P时所需要的空间 - S(P) = c + Sp(实例特征) 什么是实例特征 -> 由于是实例,所带来的特别之处有那些?例1:简单情况下,一个函数所需要的固定空间c 与 变化空间Sptemplate<class T>T Abc(T& a, T& b, T& c){ return a+b+b*c+(a+b-c)/(a+b)+4;}那些因素有可能成为实例特

2017-12-01 03:49:37 191

原创 当你写Makefile的时候你在想什么

“Clion简便,高效,也导致我连怎么编译都快忘了”Clion简便到他几乎把所有问题全考虑进去了,导致你甚至都没有意识到发生了什么就全部结束了但是Makefile不吃这一套,所有应该有的问题全都会Warn甚至Error,魔幻所有Make过程中出现过的错误:(1). warning: deleting object of polymorphic class type ‘Piece’ which

2017-11-29 21:28:06 228

原创 “为什么我的Clion编译要这么久?”

-“Clion最大的优点是在比Vs爽这么多的情况下却几乎能做到Vs大部分的功能”“Clion针对学生免费”但是Clion的安装是真的很头疼,我总结了一下,希望大家能顺利的用上ClionStep1.上网下载MinGW,记住是MinGW,不是CygwinMinGW (64位版本)的下载链接 -> MinGW(64位)下载链接下载好了以后打开开始安装,安装路径选择默认的C盘安装,等着吧,等着就行了S

2017-11-29 07:30:24 8473 2

原创 C++ 未知数量参数/list的未知数量的初始化

-Introduction: List是类里面的一个数据成员,但是初始化的时候并不知道到底会有多少内容会被添加到list //混用 关键词:initializer_list initializer_list是一种数据结构把它放在构造函数的参数列表里,相当于对函数做出声明:这里会有一个列表的内容等待被执行而它使用起来也与其他数据结构的操作有很多不一样:(1).首先在使用ini_list关

2017-11-19 00:50:13 913

原创 Templates 的使用

-Introduction : 你可以为你的函数写一个模板,也可以为你的类写一个模板。为什么要为函数写一个模板?某个函数,针对不同数据。操作方法都是一样的,只是参数类型不同当然利用函数重载是没问题的,但是一个一个定义很麻烦,所以我们需要函数模板template< class 形参名, class 形参名, ……> 返回类型 函数名(参数列表){ 函数体 } //这里的class跟类没任何

2017-11-18 21:35:19 629

原创 Clion 问题汇总

Clion 很好用,出了问题的Clion也让人很恼火,我就来记录一下Clion出过那些问题不工作的(1). No rules to make target- 检查在cmake list中所描述的文件,在相对应的地址里面是否真的存在 很多时候,里面写的东西其实在你的地址里面不存在或者是因为有许多用不到的垃圾文件,你删掉了,但是在cmakelist里面仍然存在

2017-11-18 19:22:58 4406 1

原创 C++ 指针/引用/常规/CONST型成员的初始化与使用

-Introduction:类成员函数的参数是 常规/指针/引用 都有什么区别(1) 参数内容作为常规出现的时候代表了一种拷贝构造函数(2) 参数内容作为指针出现的时候代表了一种aggregation的关系,使用最为便捷由于指针的灵活性还有不需要立刻赋值的特点,也导致其使用比较频繁这里所说的灵活性是指指针可以随时更换指向的对象 (3) 参数内容作为引用出现的时候代表了一种compositi

2017-11-18 04:16:58 502

原创 C++ 友元函数/实际使用的一些注意事项/重复定义

友元函数可以分成1.外部函数 2.其他类函数成员作为友元函数 其他的诸如友元函数导致信息不安全的老梗就不多说了,简单说说今天遇到的问题重复定义问题,出现在 其他类成员作为友元函数的时候 (1). 在A类的声明中写下函数(2). 在A类外给出具体定义 / 在A类声明中直接给出定义都会导致->(3). 之后再在目标类中写下 friend void A::function 就会报错“redefi

2017-11-16 07:55:42 1385

原创 Effective C++_2

123

2017-11-14 21:35:21 129

原创 ifstream ofstream 的初始化使用

这两个一个控制了信息往程序里输入,另一个控制了从程序里往外界输出信息 引用包 : #include 类实现 : ifstream instream; ofstream outstream; 完成实现以后的instream 相当于一个信息导入器,利用信息导入器完成信息往程序里的导入 (理论是这么说,但是实际操作的时候会遇到很多问题)主程序里实现的 instream对象 是不能拿到

2017-11-13 02:21:58 3295

原创 Effective C++ 读书笔记_1:构建全空对象数组/带参对象数组/Operator /Placement/new/指针Cast/分配一片内存

开始之前 : 一直被推荐了很久的effective c++ 直到今天终于开始看了,我会尽量认真做笔记而且尽快结束的,我有这本书的pdf中文版,如果有人恰好想要,留言我你的地址我会发给你。 10th - Nov指针与引用 * -> & 指针:可以指向某些对象也可以不指向对象 引用: 不可以不指向对象,一定要指向某些内容例一:指针与引用的初始化 char* ptr

2017-11-11 05:07:16 262

转载 Vector

http://blog.csdn.net/hancunai0017/article/details/7032383http://www.cppblog.com/totti1006/archive/2009/09/01/94955.html#include <vector> //vector的引入vector<type> name; // 定义 type可以是简单数据类型也可以是类

2017-11-09 23:42:00 147

原创 Class 类练习6. <未完成> 条件型三方关系/ 甲乙方参数修改 / 通过第三方统计数据 / 条三后续操作 / 继承细节 / list

using namespace std;class Car;class Lender;class Person;class Company; //超前使用说明class Bank;/*----------------------------雇用关系合同信息-----------------------------*

2017-11-09 05:34:35 164

原创 Class类练习 5. 藉由关系的实现 / 时间的处理

#include <iostream>#include <string>#include <ctime>#include <cmath>#include <cassert>using namespace std;class Date {private: int day, month, year; int days_since_01011970() const { // exp

2017-11-08 05:19:20 123

转载 List 使用记录

list是一个线性双向链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。由于其结构的原因,list 随机检索的性能非常的不好,因为它不像vector 那样直接找到元素的地址,而是要从头一个一个的顺序查找,这样目标元素越靠后,它的检索

2017-11-08 04:07:41 142

原创 class 类练习4 简单交互 / 复杂交互 / list / list的遍历

// 本函数功能需要在-std=c++11的情况下实现#include <iostream>#include <string>#include <list>#include <algorithm>using namespace std;class User;class Authorisation; // 超前使用说明----------class Workstation {private

2017-11-08 04:06:37 132

原创 class类练习3. 純虚函数的存在 / 引用 / 兼具子类父类身份 /

#include <iostream>using namespace std;#define VERBOSEclass Employee {private: double salary; // 純虚函数的定义方式 函数的括号后面加上 “=0”的字样 virtual double bonus_amount()=0; // 本身等价于double bonus_amount()

2017-11-08 03:45:01 137

原创 UML图

对象 对 对象 执行操作,而且这两者没有归属关系,只是单纯的执行关系 例如,客户下定单,订单与客户之间没有归属关系只有执行关系 <———-> 使用这种箭头 , 可以是单向可以是双向, 箭头指向被执行的对象表达一种归属关系, has-a的关系,并且脱离了母体,子体可以另寻一个母体接着存在 例如员工归属于公司,但是员工脱离公司可以另外寻找新的公司存在<>————–使用这种箭头,菱形从局部指向

2017-11-07 21:47:30 119

原创 练习笔记

#include<iostream> 从文件中读取string的方法.1 #include<string> #include<sstream>using namespace std;int main(){string str="abc def ghi",word;stringstream ss(str);while(ss >> word)cout

2017-11-06 00:47:34 168

原创 class练习2. 类之间的交互 / 条件型交互(两方关系的成立)

#include <iostream>#include <string>using namespace std;class Item;class LibraryUser {private: string name; int items_borrowed_count; Item *items_borrowed[3]; 包含三项内容,书名,借阅数量,以及指向书本的指针 存作数组,每

2017-11-02 06:09:48 888

原创 class练习题1.

#include <iostream>#include <string>using namespace std;class RAM {};class CPU {};class Chassis {};class Fan {}; 因为包含了这么些部件,因此把每个部件设置成一个类----------//#defi

2017-11-02 04:13:22 452

原创 CLASS - 提纲

THIS指针当创建 / 调用一个对象时,系统就提工一个this指针指向当前被调用的对象FRIEND友元函数独立于当前类的外部函数,可以访问私有 / 保护 / 公有成员 一个函数可以是多个类的友元函数,不仅可以在类外面定义,也可以在类的内部定义 在类的内部定义的时候需要在前面加上关键字friend 而在外部定义的时候不需要加上关键字friend初始化一个新的对象什么都不做: 只写了一个Class

2017-11-01 23:34:47 143

原创 快速笔记

动态内存分配 int *p = new int (10) / new int[10] / new int / new int [40]; 但是 = new int 40是不被允许的,因为不仅想要创建内存还要初始化,不行 new可以用来动态创建对象 / 对象数组, 利用这种方法创建出来的对象,要用到构造函数,利用delete删除,并调用析构函数,new出来

2017-11-01 22:10:34 146

原创 R E C U R S I O N

递归的特点在于,我目前的一个直观感受是递归大概是这么一种存在,他不是一个trick,他是一整套的解决问题的观念,下图由上图可见,这是一种一个嵌套的概念,基本会经历以下几个阶段 以循环调用语句,在程序里面出现的地方作为断点,将程序分成上下两个阶段 1.从程序开头的地方到断点,不断的执行上半部分技巧一: 记录执行次数,如果直接定义int来执行的话,每次int都会在内嵌里面重新定义一次,

2017-10-28 22:32:49 250

原创 C++ 指针/数组指针操作

之前很少使用指针 ,现在开始摸索使用 char * 指针会比 string 好用一点,因为大部分出现的指针基本都是char 指针; 赋值方式 char * =”字符串”

2017-10-28 22:07:27 363

原创 C++ 指针/数组指针操作

之前很少使用指针 ,现在开始摸索使用 char * 指针会比 string 好用一点,因为大部分出现的指针基本都是char 指针; 赋值方式 char * =”字符串”

2017-10-26 21:40:50 130

原创 21st-Oct 时对时错的方向指令string数组

Method1: 直接记录所有位置,存储到char [ ] 数组里面,然后根据此array[ ]信息判断换乘+终点是否为车站 问题:char[ ]数组尾全是乱码 ,这样使得程序认为坐标记录本身就是这样的,从而导致终点不是车站的错误Method2: 利用route转换到string数组,根据string数组长度决定移动的次数,有了移动的次数,就可以只读出char[ ]数组的前多少个字符 问题: r

2017-10-21 20:32:53 248

原创 21st-Oct 关于string数组: 下一个string数组为什么会受到上一个的影响

log: 之前由于使用char [ ] 数组来求轨迹的长度,但是由于char 数组会在我填充完毕以后自动加上很多的乱码,导致我不能顺利利用strlen的方法求出实际轨迹的长度然后的办法是利用方向指令,一个string数组的长度来求运动轨迹长度 但是实际操作以后发现还是会出一点问题,见下: Starting at Bond Street and taking the steps: S

2017-10-21 17:50:25 172

原创 String的使用技巧

String&数组型字符串的使用库 cstring 字符串长度问题 新建变量: string str赋值过程新建赋值: string str = “aaa” (范例) 输入赋值 : cin >> 字符串名 ->> 这样操作的话会自动去掉开头所有的空格 getline(cin,字符串名) ->> 不

2017-10-18 23:59:40 467

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除