自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 金钱和理智

但我告诉你,你想要的不是这些。然后,你也将努力挣到一大笔钱,并把目标定的更高,继续追逐你的发财梦。但是,你要明白,并非所有的成功都是靠努力换来的,并非所有的贫穷都是因为懒惰造成的。绝大多数债务犹如毒品:这是一阵转瞬即逝、代价昂贵的快感,只会拖累你多年,让你的生活处处受限。你的收入中有多少比例要存起来与你赚多少没有什么关系,主要还是和你的开支有关。债务是你对未来的索取,你总是为了当面的获得而放弃未来,你很快就会对此习以为常。但是,你要知道,你适应新环境的能力比你想象的要更加强大,你的目标不仅仅是追求财富。

2024-04-06 22:00:15 352 1

原创 进程、线程、协程的优缺点

多进程和多线程是并发编程中常用的两种方式,它们各有优缺点。

2023-08-08 16:40:02 329

原创 快速排序(C语言)

对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为Θ() 的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好,另外它还能够进行原址排序,甚至在虚存环境中也能很好的工作。

2023-08-02 21:14:18 60

原创 堆排序算法

在交换之后,下标largest的结点是原来的Arr[largest]的值,于是以该结点为根的子树又有可能会违反最大堆的性质。在剩余的结点中,只有一个元素不满足最大堆的性质,那就是我们刚刚换上去的Arr[1],这时候我们只需要调用一次max_heapify(Arr,1)维护堆,剩下的结点又编程了一个n-1的大顶堆了。:结点i的所有子结点都满足最大堆的性质,只有i结点不满足最大堆的性质,因为Arr[i]可能小于其孩子节点,这样就违背了最大堆的性质。这两种堆中,结点的值都要满足堆的性质。

2023-07-31 15:58:36 75 1

原创 C语言定时关机恶搞

首先叙述一下这个程序的功能:1 :开机自启动,关机以后再开机,程序自动在后台运行,到时间自动关机。2:窗口是隐藏的,启动的时候没有任何现象,但是在任务管理器能看到3:全年,非周末时间,早上6点到9点,中午12-2点,晚上10点之后都会自动关机该程序适合在校大学生舍友打游戏或者看直播时大喊大叫时使用,效果非常明显,且持续效果久,且不易发现。控制台窗口隐藏程序:#pragma comment( linker, "/subsystem:\"windows\" /entry:\"m

2023-07-31 11:33:32 99

原创 单例设计模式C++

什么是单例设计模式?单例模式是一种对象创建型模式,使用单例模式,可以保证一个类只生成一个唯一对象。也就是说,整个程序只能创建一个用单例设计模式设计的类。单例模式实现步骤懒汉式:在类中创建对象,并返回静态指针给类外的对象使用 1:构造函数私有化 2:提供静态指针 3:提供静态方法,返回静态指针饿汉式:在类外创建对象,赋给类中静态指针,作为全局变量使用为什么要使用单例模式?1、需要生成唯一序列的环境。2、需要频繁实例化,然后销毁对象。...

2022-05-30 20:17:25 65

原创 线程的创建方式

1、普通充当线程处理函数创建线程void print(){ cout << "线程处理函数启动" << endl;}void test1(){ thread t1(print); //创建线程 t1.join(); //线程汇入主线程}2、采用Lambda表达式充当线程处理函数void test2(){ thread t2([]() {cout << "Lambda表达式充当线程处理函数"<<endl; }); t2.

2022-05-02 01:29:15 60

原创 什么叫多线程

1、并发:两个或多个独立任务同时发生,一个程序同时执行多个独立任务并发假象:单核CPU通过调度或上下文的方式实现进程并发,把几件事拆分成多件小事然后分别执行他们的小事件造成并发。我们把事件A分成a1、a2、a3,把事件B分成b1、b2、b3,然后我们先执行a1、然后执行b1、a2、b2、a3、b3.2、进程:计算机中程序关于数据集合的一次运行活动,比如我们打开计算机的任务管理器,里面的每一条记录都是一条进程,一条主进程还可能包含子进程。3、线程每一

2022-05-01 18:06:26 93

原创 C++实现队列结构

队列,C++

2022-04-13 12:57:44 1959 2

转载 2n皇后问题

2n皇后问题是8皇后问题的拓展,那么我们就先讲解一下求解8皇后问题的基本思路。8皇后问题(英文:Eight queens),是由国际棋手马克斯·贝瑟尔于1848年提出的问题。问题表述为:在8×8格的国际上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以编程解决此问题。(该文章部分文字...

2022-01-26 01:48:13 155

原创 冒泡排序(关于排序算法的重要性)

我们介绍一下冒泡排序,对于少量的元素排序,他是一个有效的算法。高效且稳定的排序算法在武学上被称为“秘笈”,而像冒泡排序这样的算法,因为易学、易懂、易用,成了流行品种。当然,他是不是一个高效有用的算法,不取决于他是否流行。我们举一个简单的例子,我们让运行冒泡排序的的一台较快的计算机(计算机A)与运行归并排序的一台较慢的计算机(计算机B)竞争。每台计算机必须排序一个具有1000万个数的数组。(虽然1000万个数似乎很多,但别忘了,我们是一个14亿的人口大国,这样看来,1000万似乎就算不上很大了,如果这些数

2022-01-25 04:53:14 402

原创 C++实现栈结构

栈是一种动态集合,是比较常用的一种数据结构,它的特点就是:后进先出。栈就好像一个只有一个门的房子,先进去的人在里面,后进去的人在外面,里面的人想出来,必须得让外面的人先出来才行。如图所示,我们可以用一个数组S[1...n]来实现一个最多可容纳n个元素的栈。这个数组有两个属性,一个是maxSize,表示最大容纳量,一个是top,表示最外面的元素的位置,也是最先出来的元素,叫栈顶元素。 我们往栈中加入4个元素,分别是 15 、6 、2 、9,因为数组是从0开始...

2022-01-18 21:59:33 763

原创 基于C++类的双向链表

目录前言双向链表的定义双向链表的创建节点的创建双向链表节点查找双向链表的插入双向链表的节点删除双向链表的删除前言链表(linked list)是一种这样的数据结构,其中的各对象按线性排列。数组的线性顺序是由数组下标决定的,然而于数组不同的是,链表的各顺序是由链表中的指针决定的。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结

2022-01-17 13:46:36 803

原创 插入排序C语言描述

插入排序C语言描述

2022-01-01 18:32:31 384

空空如也

空空如也

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

TA关注的人

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