自定义博客皮肤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)
  • 收藏
  • 关注

原创 C++ 背包问题

背包问题:有N件物品和一个最多能被重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将那些物品装入背包里的物品价值总和最大。暴力解法思路:对于每一个物品都有两种状态选与不选,而对于背包有两种状态装满与未装满。先对这些情况做一下划分:这里设置一个int型变量result来表示最终求得的背包的最大总价值,其次既然要同时遍历物品的两种状态:取或者不取,我们需要采用递归的方法对所有情况进行遍历。物品为遍历完且背包未装满:继续遍历物品和背包剩余容量

2022-05-12 20:44:41 7533 3

原创 c++结构体

struct(结构体)结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员”,其描述了一块内存区间的大小及意义。结构体的意义在于可以将一堆类型不一的数据打包在一块使用,例如学生成绩表有int类型的学号、班级还有string类型的名字、还有float类型的成绩,这个功能和class的作用类似,class是将数据、函数等等的东西经行封装。struct Student_mark //struct+结构体名字{ 数据成员 };{ //数据成员 string name

2022-04-25 20:07:39 1391

原创 C++ 线段树,树状数组

ps:本文需要读者对递归和回溯,位运算的补码,位与操作以及前缀和有一定了解。后面在写到的时候会做简单介绍。结构介绍:树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值。线段树是一个二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(lo

2022-04-04 21:29:14 2977 2

原创 平衡二叉树详解

一、平衡二叉树平衡二叉搜索树又被称为AVL树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL等。二、作用我们有时在编程过程中可能会需要用到链表(时间复杂度O(n))来进行对数据的存储,但是当数据量变得十分庞大时我们对于指定数据的一些操作的时间消耗就会变得大,这时我们就需要借助将链表的结构变为二叉搜索树(时间复杂度O(logn))来进行数据的存储。但在某些情况下,例如:对[1,2,3,4,5,6,…]

2022-03-27 15:51:23 9318

原创 C++ 堆排序

基础: 1.完全二叉树:若设二叉树的深度为h,除第h层外,其他各层(1~h-1)的结点数都达到最大个数,第h层所以的结点都连续集中在最左边,只能从最深处最右边从右往左缺省。 2.最大堆结构:是一个完全二叉树,堆中每个节点的值总是不大于其父亲节点的值(即根节点总是最大的元素)思想: 1.将待排序数组形象成一个最大堆结构,从最后一个父节点(n/2-1)开始将其调整为最大堆 (父节点下标为i,则左孩子下标为2i+1,右孩子下标为2i+2) 2.将堆顶元素与待排序数组最后一个元素进行交换 3.待排

2022-03-14 20:35:36 2115

原创 C++ 桶排序

思想: 原理:将数值作为桶号,遍历整个数组,将相应的桶进行计数 1、 遍历原数组,找到最大值max,然后申请max+1个空间(桶),初始化为0(下标为0-max),即 vector<int>bucket(max+1,0) 2、 再次遍历原数组,找到每个数值对应的桶号,并对桶计数++,即bucket[vec[i]]++ 3、 遍历桶数组,看对应的桶内计数为几就取出几下下标值(桶号),放到原数组中。代码:#include<iostream>#include<

2022-03-07 18:56:24 2529 2

原创 C++插入排序

思想: 将数组分为有序表和无序表,每次从有序表中取出一个元素,插入到有序表的适当位置,刚开始有序表中只有一个数,无序表中有n-1个数。 每遍历一次,有序表中元素增加一个,无序表中元素个数减少一个,重复n-1次,完成排序。代码:#include<iostream>#include<vector>using namespace std;void insertSort(vector<int>&vec, int n){ //j表示

2022-03-07 18:52:49 1698

原创 C++冒泡排序

思想: 从左到右,相邻两数两两比较,若下标小的数大于下标大的数则交换,将最大的数放在数组的最后一位(即下标n-1的位置) 采用相同的方法,再次遍历数组,将第二大的数,放在数组倒数第二的位置(即n-2的位置),以此类推,直到数组有序 优化:当数组在整个遍历过程中没有发生交换,说明待排序数组已经有序,此时可以直接结束排序过程(用bool类型变量作标记)。代码:#include<iostream>#include<vector>using namespace

2022-03-07 18:48:06 2084 2

原创 C++ 选择排序

思想: 遍历数组,选择找到最大值,记录最大值下标maxindax,然后将最大值与最后一个值交换,即swap(vec[maxindax],vec[n-1]); 在剩下的待排序数组中,重新找到最大值,重复第一步,swap(vec[maxidnax],vec[n-2]),循环操作,直至数组排序完成。代码:#include<iostream>#include<vector>using namespace std;void selectSort(vector<int&

2022-03-07 18:41:05 544

原创 new与malloc的区别

new与malloc的区别1.new的定义new是运算符,可以用于动态分配。如果想要撤销内存使用delete。new运算符使用的一般格式为new类型,用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间,申请所得的空间的位置时根据当时的内存的实际使用情况决定的。但是,在某些特殊情况下,可能需要在程序员指定的特定内存创建对象,这就是所

2022-03-03 19:40:16 19245 7

原创 快速排序及优化方案

文章目录快速排序及其优化方案1. 快速排序的流程2. 快速排序的实现时间复杂度计算3. 快速排序优化随机获取基准值进行优化3.2二路快速排序原理:思想:4. 总结快速排序及其优化方案1. 快速排序的流程首先设定一个分界值,通过该分界值将数组分成左右两部分。将大于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边,而等于分分界值的部分放在相对中间的部分。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于分界值,相对中间的部分的的数据等于分界值。然后,左边和右边的数据可以独立排序

2022-02-20 18:55:40 6731 1

原创 数据结构与算法之字典树 (力扣208、力扣472)

字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。---百度百科

2022-01-22 20:49:11 5132

原创 不同数据类型之间的转换

数据类型转换之隐式转换、显示转换一、隐式类型转换(标准转换)1、算术转换在混合类型的表达式中,以最宽的数据类型为目标转换类型,如:int a = 3;double b = 1.12;//表达式 a+b a被转换为double类型2、赋值转换直接赋值一种类型的表达式赋值给另外一种类型的对象:将会转换为被赋值对象的类型,如:int a = 3;double b = 1.12;a = b;//b从double转换为int 类型函数传参赋值将一个表达式或者一个变量作为实参,传递给函

2022-01-21 09:59:14 8914 2

原创 二叉树的“神级“遍历法

用常量级空间实现二叉树的遍历(morris遍历)我们在学过的遍历二叉树中通常会借助栈来实现对二叉树的前、中、后序遍历这往往消耗O(n)级别的空间复杂度,而morris遍历仅使用两个指针,消耗掉O(1)级别的空间复杂度即可完成二叉树的遍历,所以我将morris遍历称之为二叉树的神级遍历法。

2022-01-20 20:00:53 5576 3

空空如也

空空如也

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

TA关注的人

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