- 博客(31)
- 资源 (11)
- 收藏
- 关注
原创 算法: 桶排序
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:在额外空间充足的情况下,尽量增大桶的数量 使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。1. 什么时候最快当输入的数据可以均匀的分配到每一个桶中。2. 什么时候最慢当输入的数据被分配到了同一个桶中。JavaScript实例functionbucket..
2021-03-31 14:55:27 151
原创 算法 : 计数排序
算法的步骤如下:(1)找出待排序的数组中最大和最小的元素 (2)统计数组中每个值为i的元素出现的次数,存入数组C的第i项 (3)对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加) (4)反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1JavaScript实例functioncountingSort(arr,maxValue){ varbucket=newArray(maxValue+1), sorte...
2021-03-31 14:54:41 117
原创 算法 : 堆排序
算法步骤 创建一个堆 H[0……n-1]; 把堆首(最大值)和堆尾互换; 把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置; 重复步骤 2,直到堆的尺寸为 1。 JavaScript实例varlen; // 因为声明的多个函数都需要数据长度,所以把len设置成为全局变量functionbuildMaxHeap(arr){// 建立大顶堆 len=arr.length; for...
2021-03-31 14:54:02 130
原创 算法 : 快速排序
算法步骤 从数列中挑出一个元素,称为 "基准"(pivot); 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作; 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序; JavaScript实例functionquickSort(arr,left,right){ varl...
2021-03-31 14:53:18 197
原创 算法 : 归并排序
算法步骤 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列; 设定两个指针,最初位置分别为两个已经排序序列的起始位置; 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置; 重复步骤 3 直到某一指针达到序列尾; 将另一序列剩下的所有元素直接复制到合并序列尾。 JavaScript 实例 functionmergeSort(arr){// 采用自上而下的递归方法 varlen...
2021-03-31 14:51:50 202
原创 算法: 希尔排序
算法步骤选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;按增量序列个数 k,对序列进行 k 趟排序;每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。代码实现JavaScript实例functionshellSort(arr){ varlen=arr.length, temp, ...
2021-03-31 14:51:07 150
原创 算法 : 插入排序
算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)代码实现JavaScript实例functioninsertionSort(arr){ varlen=arr.length; varpreIndex,current; for(vari=1;...
2021-03-31 14:50:00 96
原创 算法 : 选择排序
算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。JavaScript 代码实现实例functionselectionSort(arr){ varlen=arr.length; varminIndex,temp; for(vari=0;i<len-1;i++){ minInde...
2021-03-31 14:49:12 113
原创 算法 : 冒泡排序
算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。当输入的数据已经是正序时最快。当输入的数据是反序时最慢。5. JavaScript 代码实现实例functionbubbleSort(arr){ varlen=arr.length;...
2021-03-31 14:48:19 148
原创 c++ 时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时间戳最多可以使用到格林威治时间2038年01月19日03时14分07秒(二进制:01111111 11111111
2021-03-31 14:16:26 1027
原创 二叉树、红黑树、B&B+树超齐全,快速搞定数据结构
数据在计算机中的存储结构主要为顺序存储结构、链式存储结构、索引存储结构、散列存储结构,其中链式存储结构最常见的示例是链表与树,链式存储结构主要有以下特点:优点:逻辑相邻的节点物理上不必相邻,插入、删除灵活,只需改变节点中的指针指向缺点:存储空间利用率低,需通过指针维护节点间的逻辑关系;查找效率比顺序存储慢度:当前节点下的子节点个数二叉树二叉树是每个节点最多有两个子树的树结构,左侧子树节点称为“左子树”(left subtree),右侧子树节点称为“右子树”(right subtree)。
2021-03-25 14:18:50 136
原创 算法序列 - 二叉查找树
一、常见的查找数据结构和算法介绍1.1 链表(顺序查找)针对少量的、无规则的数据,可以采用链表进行顺序查找从头到尾依次逐个查找,直到找到所要的数据或搜索完整个数据序列。时间复杂度是O(n)它的优点是插入比较快,但是查找比较慢。1.2 有序数组(二分查找)针对有序数组,可以采用二分查找法(折半查找法)基本原理:首先讲要查找的元素月数组的中间元素比较定义三个遍历,最小值,最大值,中间值,其中中间值=(最小值+最大值)/2如果key小于中间值,把最大值的下标移动到中间值的前一个如果k
2021-03-25 14:17:03 299
原创 常见数据结构与算法整理总结
一、线性表线性表是最常用且最简单的一种数据结构,它是n个数据元素的有限序列。实现线性表的方式一般有两种,一种是使用数组存储线性表的元素,即用一组连续的存储单元依次存储线性表的数据元素。另一种是使用链表存储线性表的元素,即用一组任意的存储单元存储线性表的数据元素(存储单元可以是连续的,也可以是不连续的)。数组实现数组是一种大小固定的数据结构,对线性表的所有操作都可以通过数组来实现。虽然数组一旦创建之后,它的大小就无法改变了,但是当数组不能再存储线性表中的新元素时,我们可以创建一个新的大的数
2021-03-25 14:08:42 773
原创 协程原理:函数调用过程、参数和寄存器
SRS是单进程、单线程、多协程结构,协程(coroutine)背景以后再介绍,这篇文章介绍协程的重要基础,理解了这个基础,后续就容易看懂协程,也能更好的使用协程。SRS的线程模型,未来会改进成单进程、多线程、多协程架构,相关背景和原因请看#2188。协程就是用户空间的轻量线程,或者说是用户空间创建的伪线程,既然是创建了线程,就需要实现函数调用。简单来说,协程和线程切换的过程是类似的,只不过是用户空间实现的切换:_st_md_cxt_save:保存当前函数信息信息到内存,后续可以跳转到这个函数
2021-03-25 13:59:18 531 1
原创 iOS的各种开源项目集合
AFNetworking- ASI不升级以后,最多人用的网络连接开源库,iOS网络编程之AFNetworking使用,iOS开发下载文件速度计算,AFNetworking 3.0迁移指南,AFNetworking2.0源码解析<一>。Alamofire- Alamofire是AFNetworking的作者mattt新写的网络请求的swift库。YTKNetwork- 是基于 AFNetworking 封装的 iOS网络库,提供了更高层次的网络访问抽象。相比AFNetworking,YTK
2021-03-23 11:59:03 1661
原创 WinExec打开exe文件
1,WinExec(): WinExec主要运行EXE文件,不能运行其他类型的文件。不用引用特别单元。 原型:UINT WinExec(exePath,ShowCmd) 示例,我想要用记事本打开"C:\HDC.TXT",以正常方式运行:WinExec(pChar('notepad c:\taoyoyo.txt'),SW_SHOWNORMAL); 参数说明: --xePath:命令行参数。注意,要用pChar转化一下。 --ShowCmd:外部程序...
2021-03-17 18:43:44 5649
原创 git merge合并分支
一、本文是从master分支拉出的two,然后合并回master1、切换到master分支:git checkout master2、创建并切换到two分支:git checkout -b two3、将two分支push到远程仓库(与本地仓库同步):git push origin two4、修改two分支上的内容并提交到本地仓库:git commit -a -m"修改子分支"5、将two分支上的修改提交到远程仓库:git push origin two6、two分支上的修改ok后,切
2021-03-15 18:53:43 42156
原创 git-merge完全解析
1.git-merge相关的选项参数1.1摘要在git-merge命令中,有以下三种使用参数:git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]] [--[no-]rerere-autoupdate] [-m <msg>] [<commit>...] git
2021-03-15 17:40:45 6445
原创 OpenGL 数据处理(上)
在OpenGL中,大量的数据在着色器中传递,数据通过Buffer和Texture两种形式组织。1 缓存(Buffer)OpenGL中Buffer为一段连续的内存空间,用names标识,在使用buffer时首先调用函数保存某个GLuint类型的name,将其绑定到GL的上下文,然后再为它分配内存空间,最后输入数据。1.1 缓存生成以及内存空间分配将缓存绑定至GL上下文时,需根据不同的缓存使用场景时指定缓存绑定目标。分配内存的GL函数如下;void glBufferData(GLen.
2021-03-11 14:54:49 1002
原创 OpenCV for Matlab Users (2) - cv::Mat 类的属性和方法
目前成员变量只有 5 个:rows,cols,dims,data,step,还有一些比如像 channels,depth,elemSize,empty,isContinuous,size,total,type 貌似是成员变量,其实是没有参数的成员方法。1. 成员变量 rows 成员变量,返回矩阵的行数 int imgRows = img.rows; std::cout<<"imgRows = "<<imgRows<<std::end.
2021-03-09 15:12:19 520
原创 OpenCV 2 计算机视觉编程手册
第1章 接触图像第2章 操作像素第6章 图像滤波附录 OpenCV3 介绍及代码导读勘误我的困惑下一步计划<div id="Section1">第1章 接触图像</div>OpenCV 库的结构 载入、显示及保存图像OpenCV 库的结构sources文件夹下的子文件夹: doc 文件夹中包含的是文档 + include 文件夹中是所有头文件 modules 文件夹中包含所有的源程序 samples 文件夹中则是许多简短的学习用范例 第 2 页讲了下
2021-03-09 15:11:26 3421
原创 OpenCV学习之路(二)——Mat对象
早期的 OpenCV 中,使用 IplImage 和 CvMat 数据结构来表示图像。IplImage和 CvMat 都是 C 语言的结构。使用这两个结构的问题是内存需要手动管理,开发者必须清楚的知道何时需要申请内存,何时需要释放内存。这个开发者带来了一定的负担,开发者应该将更多精力用于算法设计,因此在新版本的 OpenCV 中引入了 Mat 类。新加入的 Mat 类能够自动管理内存。使用 Mat 类,你不再需要花费大量精力在内存管理上。而且你的代码会变得很简洁,代码行数会变少。但 C++接口唯一的不足是
2021-03-09 15:10:28 537
原创 OpenCV拾趣(二)——Qt嵌入OpenCV
在Qt开发环境中引入OpenCV 实现OpenCV图像数据到Qt图像数据的转化工具 实现一个简单的图片浏览工具搭建开发环境首先明确一下接下来的例子使用的开发环境:操作系统:Ubuntu 16.04 OpenCV版本:3.3.1 Qt版本:5.10.0 IDE:Qt Creator 4.5.0Qt Creator作为Qt自家的IDE,对Qt本身的支持是自不用说的。那么如何将OpenCV添加到开发环境里呢?OpenCV官方很贴心的提供了pkg-config的配置——如果是按照上一节规划
2021-03-09 15:09:31 755
原创 Win10+VS2017编译opencv3.2.0和opencv_contrib3.2.0来调用text模块
前言最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景图像中的文本检测与识别)模块。我参照了网上的一些教程去编译opencv+opencv_contrib,但是最后去跑样例程序(比如end_to_end_recognition.cpp ),在运行生成的exe文件时会提示OCRTesseract(33): Tesseract not found.类似的错误。其原因 [1] 是Text模块中的字符识别部分使用的是Tesseract OCR,因此在使用CMake编译生
2021-03-09 15:01:23 379
原创 Mysql的常用语句
-- 创建表createtabletableName(idintprimarykey,namevarchar(20))-- 查询select*fromtableName-- 查询并排序(降序,升序是asc)select*fromtableNameorderbydesc-- 分组查询 (根据姓名分组)selectname,count(*)fromtableNamegroupbyname-...
2021-03-09 14:57:08 70
原创 VC++数组打标记
1.NOIP2006 明明的随机数简单来说这道题就是去重然后排序输出代码如下#include<bits/stdc++.h>using namespace std;int main(){ int n,m,a[10086]; scanf("%d" , &n); for(int i = 0; i < n ;++ i) scanf("%d" ,&a[i]); sort( a, a+n);//快排 m=n; for(int i = 0
2021-03-09 14:55:52 476
原创 VS2017使用Qt教程
1.安装Qt下载地址安装过程:点击该安装包.exe, 然后安装路径任意选(但是不能够有空格或者中文)我的是在5.11下选择msvc2017-64bit,记好下载路径,等会要用2.安装Qt5.9与VS2017之间的插件:在vs2017的工具中选择扩展,然后查找安装qt插件,然后重启vs20173.配置Qt VS Tool的环境.开始在VS2017创建一个Qt的GUI的桌面程序,是否成功?(还是会出错,因为还有一点没有完成)VS2017里面,点击 “文件-->新建项目-->
2021-03-05 18:48:13 3731
原创 安装vs2017时,提取文化卡主问题,解决方案
出现这种问题,一般是电脑新做的系统 或者 是 电脑上网络慕课有问题。一般使用 windows update 升级修复下 漏洞 重启下 电脑就好了
2021-03-05 11:36:06 127
原创 C++获取屏幕分辨率(屏幕窗口大小),屏幕显示比例(DPI)几种方法
获取屏幕的分辨率的几种方法 #include #include int main(void) { HWND hd = GetDesktopWindow(); // 方法一 RECT rect; // 只获得窗口客户区的大小 GetClientRect(hd, &rect); int client_width = (rect.right - rect.left); int client_height = (rect.bottom - rect.top); std::cout
2021-03-03 14:26:20 5358 4
原创 Cocos2d-x CCNode的节点操作——添加、移除和渲染
1、 渲染优化a、合并渲染-自动批处理因为我使用的cocos2d-x2.1.5版本,引擎并没有实现自动批渲染,底层也改动了不少代码,不太方便直接升级到3.0版本,这里参考了cocos2d-x3.0版本,修改了引擎代码加入自动批渲染。很大程度的降低了draw call批次,比使用CCSpriteBatchNode操控起来更加便捷,CCSpriteBatchNode需要把子节点在逻辑层面手动添加到父节点,逻辑控制比较复杂,特别当精灵节点分布不连续的时候,自动批渲染可以解决这个问题。通过改写精灵类的dra
2021-03-02 11:55:29 891
opengl32.lib opengl32.dll
2024-07-26
NewBehaviourScript.cs
2020-09-09
cocos2d-oepngl.txt
2020-09-09
unity_dll.zip
2020-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人