- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 归并排序和快速排序的衍生问题
归并排序和快速排序都是采用分治算法的设计思想分治算法顾名思义,分而治之。就是将原问题,分割成同等结构的子问题之后将子问题逐一解决后,原问题也就得到了解决。归并排序重在治,即如何有序的合并到一起,分仅仅是简单的二分快速排序重在分,即如何根据标定点将元素划分下述两个应用的步骤和代码待补充归并排序可用于求逆序对,时间复杂度为O(nlog2n)快速排序可用于求数组中第n大的元素...
2020-05-05 09:53:20
167
原创 三路快速排序
双路快速排序的时间复杂度为O(nlog2n),空间复杂度为O(n)双路快速排序的核心思想:单路快排会将等于V的元素分配在左侧或者右侧,当数组中有大量重复元素时,这将会导致左右两侧的元素数量极度不均衡,时间复杂度退化到O(n^2),,如下图所示:为了避免该问题,双路快排是将等于V的部分近乎平均的分配在左右两侧;三路快排是将等于V的部分集中到中间,左右两侧分别为小于V和大于V的部分,这样不用对大量...
2020-05-05 09:53:03
2159
原创 双路快速排序
双路快速排序的时间复杂度为O(nlog2n),空间复杂度为O(n)双路快速排序的核心思想:单路快排会将等于V的元素分配在左侧或者右侧,当数组中有大量重复元素时,这将会导致左右两侧的元素数量极度不均衡,时间复杂度退化到O(n^2),如下图所示:双路快排是将等于V的部分近乎平均的分配在左右两侧,避免了该问题说明:双路快速排序可以有效提升有大量重复元素数组的快排效率排序的步骤和示意图如下:...
2020-05-05 09:52:48
406
原创 单路快速排序
单路快速排序的时间复杂度为O(nlog2n),空间复杂度为O(n)单路快速排序的核心思想:选取一个参考元素,将数组二分(一般为非等分),保证左侧部分比参考元素小,右侧部分比参考元素大,即将参考元素放到该元素在数组中应该在的位置,如下图所示:排序的过程和示意图如下:随机选择一个位置的元素与数组首元素交换位置,作为参考元素V,此操作可以有效避免快速排序在排序近乎有序的数组时,退化为时间复杂...
2020-05-05 09:52:30
447
原创 插入排序
插入排序的时间复杂度为O(n^2),空间复杂度为O(n)插入排序的核心思想:依次将元素插入合适的位置,保证每次插入之后的数据都是有序的,可类比于不断抓牌,并将牌按照大小顺序插入合适的位置说明:插入排序针对几乎有序的数据的排序性能极好排序的过程如下:第一个元素8默认是有序的,不会进行排序,因此从第二个元素开始排序 取出第二个元素6,比较6与8,6比8小,因此6与8交换位置,至此6位...
2020-05-05 09:52:10
142
原创 选择排序
选择排序时间复杂度是O(n^2),空间复杂度O(n)选择排序的核心思想:依次从剩余元素中找出最大或者最小的元素示意图如下,排序的过程如下:从所有元素中选择最小的1,并与原来位于第一个位置的元素交换从所有元素中选择最小的2,并与原来位于第二个位置的元素6交换依次类推,直到所有的元素排序完成代码如下:template<typename T>void sele...
2020-05-05 09:51:46
182
原创 数据库设计那些事--笔记
数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS(数据库管理系统),为这个业务系统构造出最优的数据库存储模型优良的设计 糟糕的设计 减少数据冗余 存在大量的数据冗余 避免数据维护异常 存在数据插入,更新,删除异常 节约存储空间 浪费大量的存储空间 高效的访问 访问数据低效 ps:某个列的数据可以由其他列计算得到,也称为数据冗余。...
2020-03-29 16:09:39
648
1
原创 opengl视图变换 投影变换推导
原链接https://www.cnblogs.com/jianglangcaijin/p/6035737.html推到公式Y应该处以hight,X处以width,这两处写反了
2020-03-29 16:09:17
202
原创 OpenGL和OSG中的矩阵空间变换
矩阵空间变换向量与矩阵的乘法所谓向量与矩阵的乘法就是一个向量从一个线性空间(坐标系),通过选取一个新的基底([a1, a2]构成的新坐标系),变换到这个新基底构成的另一个线性空间的过程。需要特别指出的是,一个向量的线性变换在几何上表现为缩放和旋转两个动作,以及这两个动作的组合——拉伸、压缩等。这些动作的一个共性就是都要通过原点。矩阵乘法...
2020-03-29 16:09:02
627
原创 四元数
四元数的基本概念四元数是简单的超复数。复数是由实数加上虚数单位 i 组成,其中i^2 = -1。 相似地,四元数都是由实数加上三个虚数单位 i、j、k 组成,每个四元数都是 1、i、j 和 k 的线性组合,即是四元数一般可表示为a + bi+ cj + dk,其中a、b、c 、d是实数。运算关系如下:i^2 = j^2 = k^2 = -1, i^0 = j^0 = k^0 = 1,i...
2020-03-29 16:08:29
14767
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人