C/C++
文章平均质量分 91
梦鸢MoYuan
unity开发,求职中,捞我!
展开
-
(最简单的)VS-2022搭建opengl开发环境
opengl开发前置必须:C++基础,VS开发环境。在C++中使用OpenGL需要配置多个库。为了让安装变得更简单,这里使用最新的C++的包管理器。~~C++终于有包管理器了,结束了手动编译时代~~ ,当然如果你不用那就只能下载源码,然后手动编译。而且还要自己在项目中引入包。●C++开发环境;●OpenGL / GLSL;●窗口管理;●扩展库;●数学库;●纹理管理。原创 2022-10-25 12:47:22 · 4911 阅读 · 3 评论 -
2路归并排序(考研数据结构)
2路归并排序利用分治思想将列表不断划分成左右两块(后序遍历 左右根),然后对每个各自有序的左右两块合并成一块大的有序块。时间:最好、最坏、平均-O(nlog2n)需要分解为log2层(二叉树的高度),每次合并需要O(n)空间:需要一个和原列表等大的空间 O(n)稳定性:稳定的优点:是一种稳定的,且快速的排序算法。可以扩展为多路归并,然后结合败者树优化。易于支持并行排序缺点:4. 需要过大的辅助空间O(n)5. 需要支持随机访问(链表不适用)/*2路 归并排序使用了分而治之的原创 2020-09-29 22:56:50 · 995 阅读 · 0 评论 -
堆排序(考研数据结构)
堆排序利用堆了这种数据结构(一种特殊的完全二叉树,根>左右)时间:最好、最坏、平均都为O(nlog2n)空间:O(1)只使用了几个变量稳定性:不稳定,构造堆的适合可能会打乱原有顺序优点:快速,对于任意序列其时间复杂度很稳定。缺点:要求能够随机访问,故只能对顺序表排序。算法思路:先构造出一颗大根堆(由小到大排序)。然后将堆顶元素(此时堆顶元素最大)和堆尾元素交换交换后堆的规模缩小一(也就是将已经排好序的堆尾不再排序)重复2.直到堆的规模为1 此时不再需要排序/*堆排序原创 2020-09-29 00:06:21 · 301 阅读 · 0 评论 -
快速排序算法(考研数据结构)
快速排序算法快速排序算法是一种交换排序,基于冒泡排序的采用了二分思想的优化。最坏情况将会退化为冒泡排序(这取决于基准字选取的方法)。排序思想:将元素划分为以基准字为中心的两块,一块小于它一块大于它(每次划分结束,基准字都会放到最终位置上)继续对以基准字切分出来的两块进行划分-重复1(不包括基准值)当左右两块都只有一个或者0个元素时,退出。排序完成。时间: O(nlog2n), 最坏情况下O(n^2)空间:递归栈的深度O(log2n)。最坏情况深度为n,空间为O(n)稳定性: 不稳定,排原创 2020-09-27 23:46:13 · 475 阅读 · 0 评论 -
线性表顺序存储结构-顺序表(考研数据结构)
线性表顺序存储结构-顺序表查找第i个元素:时间O(1)查找某个值的元素:时间O(n)删除一个元素:时间O(n)插入一个元素:时间O(n)优点:能够随机访问,查找第i个元素时间O(1)在有序时可以使用二分查找法,在时间O(log2n)级上完成查找某个值的元素缺点:使用静态分配时,无法扩展容量使用动态分配时,扩展容量需要时间O(n),空间O(n)插入删除需要移动大量元素/*动态分配的顺序存储结构的线性表实现*/#include<stdio.h>#include原创 2020-09-27 00:22:49 · 271 阅读 · 0 评论 -
无头结点单链表实现(考研数据结构C/C++)
不带头结点的单链表。属于线性表的一种,采用链式存储的存储结构。优点:空间动态分配,不要求连续的大片空间。插入删除方便(时间复杂度低)。缺点:不能随机访问。相对于带头结点的单链表 插入、删除不统一(实现比较复杂)。算法性能:查找:时间O(n)插入: 头插-时间O(1),尾插-时间O(n)(加入尾节点可优化为-时间O(1))删除: 按位/值删除-时间O(n)#include<stdio.h>#include<stdlib.h>/** * 无头结点原创 2020-09-24 23:44:26 · 712 阅读 · 0 评论 -
C语言的字符串输入
// 空格之前的字符串存储到定义好的字符数组中。int scanf("%s");// 会把回车一起提走但不会把回车输入数组里。char* gets(char*);原创 2019-03-16 20:00:53 · 293 阅读 · 0 评论 -
C++组合算法
#include<stdio.h>int N = 0;int M = 3;int num[100] = {0};bool visit[100] = {false};int t_num[100] = {0};int count = 0;// n 个球中取m个void dfs(int m, int index, int nn, int mm){ // 如果已经取到...原创 2018-11-23 21:55:42 · 396 阅读 · 0 评论 -
链式队列Queue
最近在学队列然后顺手写了这篇学习笔记队列的基本概念栈是先进后出 - 而队列是先进后出 这里有一个队列: <1 , 2 , 3 , 4 , 5 , 6> 通常我们对队列有两种操作出队入队出队对<1, 2, 3, 4, 5, 6>出队 出队元素是1 然后 是 2, 然后是 3入队对<1, 2, 3, 4, 5, 6>入队...原创 2018-04-17 21:52:28 · 189 阅读 · 0 评论 -
栈 实现 中缀表达式 转换成 后缀表达式 并 计算
#include <iostream>// cin 为输入 cout 为输出 #include <cstring>// 用栈 来 处理 一般的 中缀计算表达式// 这里 只实现了 最基本的 + - * / 也可以根据程序需要 添加 ^ 和 % 以及 开方等运算 using namespace std; int campareToChar(char ...原创 2018-04-02 21:11:16 · 3618 阅读 · 0 评论 -
double 和 int 转换 时的精度问题
double t = 3.9;int x = (int)(t + 0.5);// 当 t > 0.5时 可以避免转换成3 cout << x;// 输出为: 4原创 2018-03-31 14:59:37 · 2234 阅读 · 0 评论 -
二进制转格雷码 - C语言代码实现
二进制 : 1 0 1 1 1 1 1 0 1 | \ | \ | \ | \ | \ | \ | \ | \ |格雷码 : 1 1 1 0 0 0 0 1 1规则:相与 ^ 1 ^ 0 = 11 ^ 1 = 00 ^ 0 = 0// ej : 二进制数组// gl : 格雷码数组 void...原创 2018-03-11 22:22:06 · 2881 阅读 · 2 评论 -
基本排序算法
1-&gt;冒泡排序: 排序基本思想: 一个一个的比较,将最大或者最小的数冒到最后面; 算法时间复杂度: 稳定 - 大于 n * n ^ 2;// 默认从小到大void MySort(int num[], int len){ int temp = 0; for(int i = 0; i &lt; len - 1; i++){ ...原创 2018-02-15 23:15:46 · 96 阅读 · 0 评论 -
C的字符串操作函数实现
strlen函数实现: int MyStrlen(char * str){ if(str == NULL) return -1; int count = 0; while(*str++ != '\0'){ count ++; } return count;}strcpy函数实现:char * MyStrc...原创 2018-02-14 18:41:27 · 152 阅读 · 0 评论