- 博客(25)
- 资源 (7)
- 收藏
- 关注
原创 排序--Bubble的优化和性能(算法时间、空间复杂度、稳定性)分析
一、算法基本思想(1)基本思想冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。二、算法实现void BubbleSort(int ...
2018-08-16 15:54:06 759
原创 SGI版的空间配置器解析
这篇文章主要介绍的是STL中空间配置器的底层实现。。。 1、为什么要存在空间配置器? 为什么要有空间配置器呢?这主要是从两个方面来考虑的。1、小块内存带来的内存碎片问题 单从分配的角度来看。由于频繁分配、释放小块内存容易在堆中造成外碎片(极端情况下就是堆中空闲的内存总量满足一个请求,但是这些空闲的块都不连续,导致任何一个单独的空闲的块都无法满足这个请求)。 2、小块内存频繁申...
2018-08-15 20:27:41 374
原创 二叉树经典面试题
二叉树的结点类型如下:typedef struct BtNode{ BtNode *leftchild; BtNode *rightchild; ElemType data;}BtNode, *BinaryTree;1. 给你一颗普通的二叉树,求二叉树中最远的两个节点的距离 分析: 1、如果具有最远距离的两个结点之间的路径经过根结点,则最远距离...
2018-08-14 16:33:56 519
原创 switch和if相关内容总结
第一个问题:switch和if else的区别:switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。具体地说,switch......
2018-04-03 22:34:52 273
原创 多线程系列——Mutex的两个基本操作lock和unlock的实现
假设Mutex变量的值为1表示互斥锁空闲,这时某个进程调用lock可以获得锁,而Mutex的值为0表示互斥锁已经被某个线程获得,其它线程再调用lock只能挂起等待大多数结构都提供swap或exchange指令,该指令的作用是把寄存器和内存单元数据交换由于只有一条指令,确保原子性,即使多处理器平台,访问内存的总线周期亦有先后,一个处理器执行交换指令时,另一处理器只能等待总线周期。
2017-10-09 20:09:22 10918
原创 Qt 下使用线程绘图
通过pushbutton关联槽函数自定义线程drawImage,drawImage画图绘制完,发送updateImage(QImage image_date)信号发送给对应的槽函数getImage(QImage)接收QImage图片,update()会自动调用paintEvent()来绘制图像。#ifndef WIDGET_H#define WIDGET_H//https://blo...
2019-09-03 18:31:43 1038
原创 QT编写一个简单的记事本
1,ui界面界面设计,在最右面修改类和对象,对象的名称 。关联部件和槽函数#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include<QtDebug>#include<QFile> #include<QFileDialog>#include&...
2019-08-25 18:18:28 797
原创 Qt--实现简单加法计算器
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include<QPushButton>#include<QHBoxLayout>#include<QVBoxLayout>#include<QGridLayout>#include<QLineEdit>#...
2019-08-12 17:43:38 3509
转载 【贪心】活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该...
2018-08-24 19:35:41 344
转载 如何高效学习和工作(撸代码)
一、如何高效地学习IT技能?在线课堂学习方式:三个一:思路一致、注意力一致、代码一致听课方式:“三个注意”:概念、场景、优缺点。 线下自我学习方式:源码学习法:三个注意:分析源码思路、提取理论知识点和跟着思路敲一遍。视频学习法:哪不会看哪里、边看边整理思路、边敲代码。 二、如何高效地IT工作?编码前:你要知道你要干什么(需求分析)。你要实现功...
2018-08-17 14:51:23 252
转载 迭代器萃取
C++ 模板类型萃取技术 :https://blog.csdn.net/dream_1996/article/details/78866897
2018-08-15 21:01:58 326
原创 C语言模拟实现C++的继承与多态
继承与多态的概念 继承:是面向对象最显著的一个特性。继承是指可以使用现有类的所有功能,可以使一个对象直接使用另一个对象的属性方法。 通过继承创建的新类称为“子类”或者“派生类”,被继承的类称为“基类”或者“父类”。多态:简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。 C++多态性是通过虚函数+继承来实现的,虚函数允许子类重新定义成员函数,而...
2018-08-14 17:24:57 248
原创 【排序】插入排序,希尔排序,选择排序,冒泡排序,堆排序,归并排序优化及稳定性分析
InsertSort:(以升序为例)插入排序的基本思想是: 每次将一个待排的记录,按照其关键字的大小,插入到前面已经排好序的有序区中适当的位置,直到全部记录插入完毕为止。 假设待排序的记录存放在数组R[0..n]中,初始时R[0]是一个有序区,R[1..n]是无序区,从i=1开始,依次将R[i]插入到有序区R[0..i-1]中,生成一个包含n个记录的有序区void I...
2018-08-13 20:00:34 1067
原创 浅谈hash实现原理
哈希表(散列表)通过将关键码映射到表中的某个位置上来存储元素,然后根据关键码来访问元素。常用的hash函数有除留余数法,线性探测,二次探测,开链法,在大部分情况下基本就是用开链法:1、直接定址法取关键字的某个线性函数作为散列函数,Hash(key)=A*key+B;但是这种方法有很大的缺陷,就是当关键码比较分散时,hash表的所浪费的空间是非常大的。 2、除留余数法设散...
2018-08-07 19:56:53 5258
原创 CVTE笔试试题-第一个字符串中删除第二 个字符串中没有出现过的字符,并返回第一个字符串的指针
题目:实现以下函数:输入为两个字符串指针,要求从第一个字符串中删除第二 个字符串中没有出现过的字符,并 返回第一个字符串的指针。实现函数: char* intersectStr(char* str1, char* str2)示例: 输入: str1="Welcome CVTE" str2="KEem"输出: "emeE"主要问题: 1、如何判断那些字符...
2018-07-21 22:29:02 551
转载 从 网址 输入到页面展现发生了什么?(What really happens when you navigate to a URL)
原文地址:点击打开链接当你从浏览器输入www.baidu.com后台发生了什么1.将URL输入到浏览器中 这是最点单的一个,例如:facebook.conm2.浏览器根据域名查找IP地址浏览的第一步就是为访问域名计算出IP地址。DNS查找过程如下:Browser cache(浏览器缓存)—浏览器会缓存DNS记录一段时间。有趣的是,操作系统并没有告诉浏览器每一个DNS记录缓存的存活时间,所以浏览器...
2018-04-16 21:25:49 162
转载 右值引用与转移语义
新特性的目的右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面: 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。 能够更简洁明确地定义泛...
2018-04-07 21:57:12 134
转载 IO复用\阻塞IO\非阻塞IO\同步IO\异步IO
以下是对 《UNIX网络编程卷1》第6章的总结。首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (select and poll)signal driven I/O (SIGIO...
2018-04-03 22:27:20 339
原创 c++多态
最近查看有关多态的知识,感觉有些陌生,因此梳理一下c++多态的知识 多态:分为静多态和动多态,分别对应编译时期绑定的称为静多态(早绑定),非编译时期绑定的称为动多态(晚绑定)静多态通过函数模板和重载实现.本质是接口的复用。函数重载:int add(int a, int b){ return a + b;}double add(double a, double b)
2018-02-02 20:18:46 132
原创 类型强转
int i = 0; double d = i; //显示的强制类型转换 cout << i<<endl; int *p =&i; double b = (int)p;//显示的强制类型转换 cout 1 static_castint i = 2; double d = static_cast(i); //正确,相关类型转换 int *p = &i; doub
2018-01-27 21:02:36 310
原创 最长不重复字串
编程:给定两个字符串A,B(只包含26个英文字母),输出所有公共的最长子字符串(如果出现重复子串,则输出多次)输入包括两行,每行为一个连续字符串(大小写敏感)输出包括多行,每行为扫描到的最长公共子串,按照该子串在字符串A(即第一行输入字符串)中出现的先后次序输出 abcxyzabcrstopqrstabc样例输出:abcabcrst动态规划假设两个字符串分别为s和t...
2018-01-27 18:12:10 260
原创 笔试之火柴棒问题
火柴棒问题用火柴棒摆成的0-9间的数字,横向由一根火柴构成,纵向都是由两根火柴构成,可按如下规则进行变化:1.数字移动一根火柴棒可变成其它0到9之间合法的数字2.数字添加一根火柴棒可变成其它0到9之间合法的数字3.数字去掉一根火柴棒可变成其它0到9之间合法的数字现在给出一个带有两个操作数的+,-,*,/的算术式子,需要你判断该式子是否成立,如给出式子9-6=3,这个符合
2018-01-17 17:31:36 1796
原创 c++ string 类的实现
#include #include class CString{public: CString(const char *p = NULL) { if (p == NULL) { mptr = new char[1]; *mptr = 0; } else { mptr = new char[strlen(p) + 1]; strcpy(
2018-01-12 16:54:21 124
原创 【数据结构】二叉树之堆排序(完整代码)
堆的概念最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,位于堆顶结点的关键码最小最大堆:任一结点的关键码均大于等于它的左右孩子的关键码,位于堆顶结点的关键码最大堆存储在下标为0开始计数的数组中,因此在堆中给定小标为i的结点时:1、如果i=0,结点i是根节点,没有双亲节点;否则结点i的双亲结点为结点(i-1)/22、如果2*i+1>n-1,则结点i无左孩子,否则结
2017-10-10 20:15:18 842
原创 c语言——面试之assert断言使用
查看vs 2013assert定义,如下:#ifdef NDEBUG#define assert(_Expression) ((void)0)#else /* NDEBUG */#ifdef __cplusplusextern "C" {#endif /* __cplusplus */_CRTIMP void __cdecl _wassert(_In_z_ con
2017-10-07 19:21:59 765
msvcp120d.dll,msvcr120d.dll ,Qt5Core.dll
2020-04-09
传智播客_Qt 教程 +代码.7z
2019-09-19
matlab 实现光伏发电能量管理仿真
2019-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人