- 博客(12)
- 收藏
- 关注
原创 几种排序算法的比较
1.分类:非线性时间比较类排序:通过比较来决定元素间的相对位置关系,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间比较类排序:不通过比较来决定元素间的相对位置关系,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间比较类排序。2.复杂度3.算法相关概念稳定:如果arr[i] = arr[j],i < j,排序后arr[i],arr[j]位置没变化。不稳定:如果arr[i] = arr[j],i < j,排序后arr
2020-09-13 22:22:33 155
原创 插入排序
1.时间复杂度n*n2.逻辑分析总的来说,是将数组分为2个部分,一个是有序部分,另一个是无序部分。将无序部分的数据依次取出,插入到有序部分,最终形成排序后的数组。3.代码template <class T>void InsertArr(T* arr, int len){ for (int i = 1; i < len; ++i) { T temp = arr[i]; // 取出被比较值 int j = i - 1; for (; j >= 0
2020-09-13 18:43:17 79
原创 排序算法之冒泡排序
1.特点冒泡排序是实现起来最简单,运算复杂度为n^2的算法。2.代码template <class T>void printArr(T* arr, int len){ for (int i = 0; i < len; ++i) { cout << arr[i] << " "; } cout << endl;}template <class T>void BubbleSort(T* arr, int len
2020-09-09 00:08:40 99
原创 链表之双链表
1.定义双链表是由一系列节点连接起来的数据结构,通过当前节点都可以找到前一个节点和下一个节点。2.特点使用方法,组成和内存存储方式等和单链表一样优点:可以找到某个节点的前驱和后继,可进可退。缺点:增加,删除节点复杂;因为每个节点的数据结构中多一个指针,所以多占一个指针的内存空间;3.实现template<class T> struct DNode {public: T value; DNode *prev; DNode *next;public: D
2020-09-08 23:33:16 425
原创 链表之单链表
1.定义单链表是由一系列连接在一起的节点构成,其中的每个节点都是一个数据结构。 2.使用方法单链表的节点通常是动态分配,使用和删除的,即单链表在程序运行时允许增大或缩小。3.组成非空单链表的第一个节点为单链表的头;每个节点由一个数据成员和一个指向下一个节点的指针(也被称为后继指针)组成,最后一个节点的后继指针被设置为nullptr表示链表的结束。 ...
2020-09-07 00:41:34 142
原创 数组
线性表之数组1.存储方式数组在内存中开辟一段连续的空间,按照先后顺序存储,前后相邻的两个元素之间的地址相邻。 2.数据的操作2.1读取找到需要读取的数据的位置pos,直接根据pos取值。2.2增加获取数组的大小,在数组的最后添加一个数据...
2020-09-06 18:13:53 77
原创 数据结构与算法的基本概念
书籍:c++数据结构与算法(第四版) Adam Drozdek著章节:第3章 链表3 综述:数组是程序设计语言自带的一种有效的组织数据的数据结构。但存在两个缺点,其一,程序在编译时需要知道数组的大小;其二,数据相邻,且连续存放,插入数据时,会移动部分其他的数据。相比之下,链表不存在上述两个缺点,因为链表存放的多个节点,每个节点的位置不固定,且每个节点信息里只有数据项和下个节点位置的指针...
2020-09-06 16:58:00 256
原创 超级指针的使用
一般来说,计算机程序分配内存在堆和栈上。在堆上的内存系统不会自动释放,需要人工释放,而在栈上的内存会自动释放。而,堆上的内存人工释放不是一件容易的事情,什么时刻释放和是否释放完全都是问题。本文模仿osg中osg::ref_ptr类,写了一个指针,自动释放分配的内存。// 声明一个类class Derive{public: Derive(){ std::cout <<...
2019-05-14 09:57:51 439
原创 基于g指针,d指针的数据隐藏
来自Qt源码中有关g指针和d指针的相关代码实例:// 第一段class Q_CORE_EXPORT QCoreApplication#ifndef QT_NO_QOBJECT: public QObject#endif{……Q_DECLARE_PRIVATE(QCoreApplication)public:……~QCoreApplication();……protect...
2019-05-13 21:06:42 99
原创 排序
1.快速排序1.1 思想:将原始数组划分成两个数组,第一个子数组中的元素小于或等于一个选定的关键字,这个关键字成为边界或者基准,同时,第二个子数组中的元素大于或等于边界。再继续对上述两个子数组进行排序,每个子数组选定一个新的边界。1.2 伪代码(C++)template<typename T>void quicksort(T data[], int first, int...
2018-10-09 01:05:52 136 1
原创 opencv2.4.9+VS2012 视频录像并分时段保存
#include "stdafx.h"#include "cv.h"#include "highgui.h"#include "iostream"using namespace std;const int NumFrame_per_video = 135;const int Num_Total_Frame_per_Video =1000 ;const int N
2016-04-28 10:59:55 732 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人