自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 Qt使用Windows Api模拟键盘事件 --- Qt Key To Windows Key

QT的按键键值转换成windowsAPI中的按键键值。

2024-03-22 16:34:41 273 1

原创 关于单例模式的思考

所谓“”是指一个类在程序运行过程中。那什么时候可以把类设计成单例呢?;**①:程序中多个类都需要记录一些操作内容或结果,将日志管理设置成单例模式的话,一方面(这些类只需要调用“日志管理”这个单例写入记录的接口就行)。另一方面(如果每个类有设计写入记录的功能,那么至少得设计将日志系统打开,关闭,还得关心资源释放问题)。②:程序使用同一个数据库,为了编码和阅读源码时方便,将程序中所有对数据库的操作都写在同一个单例类里。③:同①。

2023-07-18 11:01:39 197 1

原创 ubuntu20.04安装docker

docker docker-compose 安装

2022-07-28 11:48:05 398 1

原创 Ubuntu20.04配置好文

ubuntu配置

2022-06-15 10:04:36 170

原创 win10 + Ubuntu 18.04.1 LTS (Bionic Beaver) 双系统的安装配置

前言:           由于做一个项目需要使用Ubuntu的系统,鉴于虚拟机在我的电脑上运行比较慢,所以装个双系统。也在网上搜了很多怎么配置的资料,但过程中多多少少遇到一些问题,所以这次记录一下,方便后面的人参考。 准备:       1.准备一个空的U盘。       2.因为官网上下载速度很慢,所以我是在阿里云的镜像上下载的Ubuntu。              ...

2018-11-14 10:35:15 1351

转载 三路快速排序算法

 即分为  大于  等于 小于 基准值的三部分// 递归的三路快速排序算法template <typename T>void __quickSort3Ways(T arr[], int l, int r){ if( r <= l ) return; // 随机在arr[l...r]的范围中, 选择一个数值作为标定点piv...

2018-07-22 19:39:32 1842

原创 双路快速排序算法

为了解决数组中存在大量重复的元素使得在按基准值分成两部分时,重复元素都集中分到其中一部分的问题(如果两部分元素数量相差太大,快速排序算法是会退化为O(n^2)的),可以使用双路快速排序算法。  双路快速排序算法的基本思路:设置一个变量 i  从最左边开始遍历  直到找到第一个比 基准值大的数时停止,再设置个变量 j  从最右边开始遍历,直到找到第一个比 基准值小的数时停止,这时候交换i...

2018-07-22 19:03:02 849

原创 快速排序(Quick Sort) O(nlgn)

快速排序的基本思想:    在待排序的序列中选取一个值作为一个基准值,按照其他数值与这个基准值的大小关系将这个序列划分成两个子序列(基准值会在这两个子序列的中间,划分成一边所有元素比基准值大,一边所有元素比基准值小)。这样快速排序第一次排完,我们选取的这个基准值就会出现在它该出现的位置上。这就是快速排序的单趟算法,也就是完成了一次快速排序。 具体操作:以10个整型元素的数组arr表示:...

2018-07-22 16:10:45 606

原创 堆内存和栈内存

 堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆内存,并且记得在最后delete掉开辟的堆空间 栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量           int arr[5];                      这个数组开辟在栈空间里         int *arr = new int[5];     这个数组...

2018-07-19 23:18:35 133

原创 自顶向下的归并排序(Merge Sort) O(nlogn)

归并排序的基本思想:          该算法是采用分治法来实现的,将原来的数组不断对半分,直到分得每个数组含有一个元素后,再一层一层归并的过程(按要求排列好) 下面就是将数组逐渐二分的过程:对Level 3到Level2  的归并:最后一层的归并:        在上图中,将黑色箭头所指“1”与绿色箭头所指“2”进行大小比较,较小的赋值给箭头所指的“1”处。执...

2018-07-19 21:13:44 1373

原创 插入排序(Insertion sorting)O(n^2)

插入排序思想:(跟一张一张抓扑克牌,然后从左往右,从大到小将这张牌插入合适的一样的思想)将当前元素与之前已经拍好序的元素挨个进行比较,如果不符合条件,则将当前位置的元素与之前对比的那个元素交换位置,然后依次与前面的元素比较,直到当前元素找到合适的位置为止。 C++代码如下;void insertSort(int a[], int n) { for (int i = 1; i &lt...

2018-07-19 13:38:18 186

原创 关于debug下和release下程序运行时间不同

        Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。        Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 例如:在VS2017中 debug模式下 将10000个数据进行插入排序需要的时间为3-4s(这里用的swap函数来实现元素中的交换,如果自己定义交换代码...

2018-07-19 13:06:58 3025

原创 C/C++测试程序运行效率代码(clock函数)

         我们要使用的clock_t     clock()    CLOCKS_PER_SEC  这三个都是在 ctime(在C里应该引用time.h这个头文件) 这个头文件里,所以要包含一下这个头文件。        clock_t 在源代码中我们可以看到,它的类型为长整形(long)。                                            ...

2018-07-19 11:17:27 9007

转载 选择排序(Selection Sorting) O(n^2)

选择排序的思想:从当前位置及以后未排好的元素中选出符合条件的元素(例如最小元素或最大元素),最后将这个选中的元素与当前位置的元素进行交换。选择排序的c++代码如下(该代码适合基本的数据类型,如果是自定义类型,则需要重载符号“<”来实现排序) template <typename T>void fun(T *a, int n) { for (int i = 0; i ...

2018-07-18 14:03:03 321

原创 函数指针和指针函数

函数指针:           函数指针是一个指向函数的指针。而每个函数在编译的时候都会有个入口地址,这个入口地址就是函数指针所指向的地址。使用方法:  如下代码:#include<iostream>//定义了个简单的两个int型整数相加的函数int add(int a, int b) { return a + b;}/* 测试调用幻术add...

2018-07-18 12:26:09 188

原创 C/C++不做数组越界检查

C语言非常重视运行时的效率,所以没有进行数组越界检查,而C++继承了C的效率要求,自然也不做数组越界检查。(检查数据越界,编译器就必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降)例如下面这段代码: int a[2];//定义一个长度为2的int型数组a a[0] = 1; a[1] = 2; a[2] = 4;//越界 for (...

2018-07-18 11:10:14 4384

docker docker-compose安装包

ubuntu20.04 docker 和 docker-compose的安装方法,具体见博客:https://blog.csdn.net/ive_lanco/article/details/126031412?spm=1001.2014.3001.5501

2022-07-28

空空如也

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

TA关注的人

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