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

原创 gcc13.2 编译安装

GCC13.2

2023-09-06 13:36:06 2663 2

原创 C++使用OpenSSL库中的ECDSA签名验签

C++ OPENSSL ECDSA

2022-10-12 17:29:33 1196 1

原创 C++数据结构与算法之二叉树后序遍历

二叉树后序遍历C++二叉树后序遍历基本思想C++二叉树后序遍历代码C++二叉树后序遍历基本思想创建两个栈stk和res,先把根节点压入栈中,循环stk不为空,创建一个tmp节点赋值为栈顶元素,弹栈,把tmp压入另一个栈,如果tmp的左孩子不为空,就把左孩子压入栈,如果tmp的右孩子不为空就把后孩子压入栈,循环输出res栈顶元素,输出一个弹一个,循环条件res不能为空C++二叉树后序遍历代码void postOrderSortCure(TreeNode* root){ if(root!=NULL)

2021-06-02 10:29:26 543

原创 C++数据结构与算法之二叉树中序遍历

二叉树中序遍历C++二叉树中序遍历基本思想C++二叉树中序遍历代码C++二叉树中序遍历基本思想申请一个栈stk,再申请一个变量cur,初始值让它等于头节点先把cur压入栈中对cur节点的整颗子树来说,依次把左边界压入栈中,不断重复直到cur为空从stk弹出一个节点记作node,打印node的值,并让cur=node.right。重复第二个步骤,当stk为空并且cur为空时,结束循环。C++二叉树中序遍历代码//递归写法void inorderSortCure(TreeNode* root){

2021-06-02 10:16:44 485 1

原创 C++数据结构与算法之二叉树前序遍历

二叉树前序遍历C++二叉树前序遍历基本思想C++二叉树前序遍历代码C++二叉树前序遍历基本思想申请一个新的栈为stk,将头节点压入栈中每次从stk中弹出栈顶节点,记为cur,然后打印cur的值当cur的右孩子不为空,压入栈中当cur的左孩子不为空,压入栈中不断重复,直到stk为空C++二叉树前序遍历代码struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int val,TreeNode *left,

2021-06-01 22:49:54 272 1

原创 C++数据结构与算法之二叉树层次遍历

二叉树层次遍历C++层次遍历思想C++层次遍历代码C++层次遍历思想第一步:将根节点放入队列第二步:每次从队列中弹出一个节点,记为node第三步:看这个node有没有左孩子,如果有左孩子就把左孩子放到队列中,如果node有右孩子就把右孩子放到队列中。第四步:重复步骤二和步骤三,直到队列为空C++层次遍历代码struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int val,TreeNode *left

2021-05-31 22:38:32 242

原创 C++数据结构与算法之排序——归并排序

C++归并排序归并排序基本思想归并排序代码归并排序基本思想思想:将两个有序的数组合并成一个有序的数组第一步:将数组进行分解,当分解成单个元素为一组的时候才是组内有序的第二步:将两两有序的数组进行合并,将两个有序数组合并成一个有序数组。重复第二步,直至排序完成。合并的步骤:先申请两数组合并后那么大小的空间,然后将两个排好序的数组逐一进行比较,往申请空间里面放。归并排序代码void merge(vector<int> &vec,int l,int mid ,int r){

2021-05-30 10:07:53 170

原创 C++数据结构与算法之堆排序

C++堆排序堆排序基本思想堆排序的代码堆排序基本思想第一步:我们将待排序数组想象成一个堆结构,并将其调整成最大堆(堆结构:左孩子的下标是2i+1,右孩子下标为2i+2)(最大堆的特点,在这个堆结构中,任何一个父节点的值都大于其子节点的值)第二步:将堆顶元素与待排序数组(假设待排序的数据数量为nums)最后一个元素进行交换,swap(a[0],a[nums-1])第三步:待排序的数据量减少一个,即num–;将待排序数组重新调整成最大堆结构,重复第二步,循环n-1次,将所有数据排序完成初始化堆(将

2021-05-30 09:31:36 90

原创 C++数据结构与算法之排序——快速排序

C++快速排序快速排序基本思想快速排序的代码快速排序基本思想第一步:找一个基准值(这里选取待排序数组中最左边的值)然后将待排序数组分成三个部分第一部分:数据全小于基准值第二部分:数据全等于基准值第三部分:数据全大于基准值第二步:将第一部分和第三部分分别进行第一步处理,直到i>=j快速排序的代码pair<int,int> quickHolandFlag(int a[],int l,int r){ int i =l-1,j=r+1,index =l; int tmp =

2021-05-28 15:43:46 185

原创 C++数据结构与算法之排序——桶排序

C++桶排序桶排序的基本思想桶排序的代码桶排序的基本思想原来:把数值记作桶号,遍历整个数组,将相应的桶进行计数第一步:遍历原数组,找到最大值max,并且申请max+1个桶,初始化为0(下标从0到max),即vector bucket(max+1,0);第二步:遍历原数组,找到每个数值对应的桶号,并对桶计数++,即bucket[vec[i]]++;第三步:遍历桶数组,看对应的桶内计数为几就取出几个下标值,放到原数组,即while(bucker[i]–) vec[index++]=bucket[i];

2021-05-28 15:18:22 475

原创 C++数据结构与算法之排序——希尔排序

C++希尔排序希尔排序基本思想希尔排序代码希尔排序基本思想先分组在进行排序,在对组内进行直接插入排序组内先设置一个初始值gap=n/2;将数列分成gap组第0组的数值为:a[0],a[0+gap],a[0+2gap] …直到下标越界第1组的数值为:a[1],a[1+gap],a[1+2gap]…直到下标越界…第gap-1组的数值为:a[gap-1],a[gap-1+gap],a[gap-1+2*gap]…直到下标越界每组进行直接插入排序然后将gap缩进为gap/=2;重复第一步,当gap缩

2021-05-28 15:01:52 119

原创 C++数据结构与算法之排序——直接插入排序

C++直接插入排序 直接插入排序思想直接插入排序代码直接插入排序思想将数组分为有序区和无序区,每次从无序区中取出一个元素,插入到有序区适当的位置,一开始有序区只有一个数,无序区有n-1个数。每遍历一次,有序区中元素增加一个,无序区中元素减少一个,完成排序。下图为直接插入排序流程图:直接插入排序代码void straightSort(int *arr,int len){ int tmp = 0; int j = 0; for(int i = 1;i<len;i++) {//i表示

2021-05-26 09:02:20 276

原创 C++数据结构与算法之排序——选择排序

C++选择排序选择排序基本思想选择排序代码:选择排序基本思想第一步:选择找到数组中最大值,并且记录最大值的下标maxIndex,将最大值和数组最后一个值交换,即swap(a[maxIndex],a[n-1])第二步:在剩下的待排序数组中,重新找到最大值,重复第一步骤,swap(a[maxIndex],a[n-2]);循环操作,直到数组有序为止选择排序代码:void selectSort(vector<int> &vec){ int maxIndex = 0; int n

2021-05-26 08:48:55 141

原创 C++数据结构与算法之排序——冒泡排序

C++冒泡排序冒泡排序基本思想:冒泡排序代码:冒泡排序基本思想:第一步:两两比较,将最大的数放到数组最后一个位置(既下标n-1的位置)第二步:采用同样的方法,再次遍历,将第二大的数放到数组倒数第二的位置(既下标为n-2的位置)。以此类推,直到数组有序。下图为冒泡排序流程图,描述了冒泡排序思想的第一步骤,每遍历一次确定一个值的位置,如下图所示:冒泡排序代码:void bubbleSort(vector<int> &vec){ for(int i = vec.size()-

2021-05-26 08:36:20 228

空空如也

空空如也

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

TA关注的人

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