- 博客(26)
- 资源 (46)
- 收藏
- 关注
原创 6.归并排序
算法思想归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并算法描述1.把长度为n的输入序列分成两个长度为n/2的子序列;2.对这两个子序列分别采用归并排序;3.将两个排序好的子序列合并成一个最终的排序序列。...
2020-07-29 23:37:52 308
原创 5.希尔排序
算法思想希尔排序是希尔(Donald Shell) 于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。希尔排序是把记录按下表的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。算法描述我们来看下希尔排序的基本步骤
2020-07-29 14:49:33 283
原创 4.插入排序
算法思想插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:1.从第一个元素开始,该元素可以认为已经被排序;2.取出下一个元素,在已经排序的元素序列中从后向前扫描;3.如果该元素(已排序)大于新元素,将该元素移到下一位置;4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;5.将新元素
2020-07-28 21:57:51 283
原创 3.快速排序
算法思想快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:1.从数列中挑出一个元素,称为 “基准”(pivot);2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。3…在这个分区退出之后,该基准就处于数列的中间位置。这个称
2020-07-28 21:10:47 237
转载 python占位符
<div><p>占位符,顾名思义就是插在输出里站位的符号。占位符是绝大部分编程语言都存在的语法, 而且大部分都是相通的, 它是一种非常常用的字符串格式化的方式。</p><h2>1. 常用占位符的含义</h2><p>s : 获取传入对象的__str__方法的返回值,并将其格式化到指定位置</p><p>r : 获取传入对象的__repr__方法的返回值,并将其格式化到指定位置</p>...
2020-07-28 17:59:17 1251
原创 2.选择排序
选择排序思想选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法描述n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:1.初始状态:无序区为R[1…n],有序区为空;2.第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1…i-1]和R(i…n
2020-07-27 22:27:40 145
原创 1.冒泡排序
冒泡排序思想基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。直观表达,每一趟遍历,将一个最大的数移到序列末尾。算法描述1.比较相邻的元素,如果前一个比后一个大,交换之。2.第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。3.第二趟将第二大的数移动至倒数第二位…因此需要n-1趟;动图实现,(来源参考资料)代码实现:C++
2020-07-27 21:40:59 161
原创 十大排序算法总结
排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序;O(n1+§))
2020-07-25 13:37:55 135
原创 图像算法面经总结
1.https://www.nowcoder.com/discuss/328520?type=post&order=time&pos=&page=1&channel=666&source_id=search_post2.https://www.nowcoder.com/discuss/262804?type=post&order=time&pos=&page=2&channel=666&source_id=search_pos
2020-07-24 18:00:22 941
原创 训练loss不下降原因总结
当我们训练一个神经网络模型的时候,我们经常会遇到这样的一个头疼的问题,那就是,神经网络模型的loss值不下降,以致我们无法训练,或者无法得到一个效果较好的模型。导致训练时loss不下降的原因有很多,而且,更普遍的来说,loss不下降一般分为三种,即:训练集上loss不下降,验证集上loss不下降,和测试集上loss不下降训练集loss不下降1.模型结构和特征工程存在问题如果一个模型的结构有问题,那么它就很难训练,通常,自己“自主研发”设计的网络结构可能很难适应实际问题,通过参考别人已经设计好并实现和测
2020-07-20 18:08:06 4774 1
原创 剑指offer学习记录(2)
面试题4:二维数组中的查找题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:从数组的右上角开始查找,如果右上角的数比要查找的数大,就排除这一列,否则,就在这一列往下找,依次类推。#include<iostream>using namespace std;bool twoDArrayFind(int[][4], int, int,
2020-07-18 00:42:49 144
原创 剑指offer学习记录(1)
3.数组中重复的数字#include<iostream>using namespace std;//找出数字中重复的数字bool FindNumbers(int num[], int len, int *val){ if (NULL == num || len <= 0) { return false; } for (int i = 0; i < len; ++i) { if (num[i]<0 || num[i]>len) {
2020-07-16 23:01:20 156
原创 C++实现图像的旋转,裁剪,gamma变换,平移
#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;/**************************************************************************************************************Function: RotateImageDescription:
2020-07-16 18:34:50 1124
原创 郝斌老师【数据结构入门】之快速排序
#include<stdio.h>void QuickSort(int *, int, int);int FindPos(int *, int, int);//主要思想:通过移动和赋值的方式确定第一个元素的最终位置,然后在用同样的方法分别确定第一个元素的最终位置的左边一部分和右边一部分的第一个元素的最终位置,以此类推int main(void){ int a[6] = { 2,1,0,5,4,3 }; int i; for (i = 0; i < 6; ++i)
2020-07-15 21:37:42 180
原创 strides=(2,2)解释
strides在官方定义中是一个一维具有四个元素的张量,其规定前后必须为1,所以我们可以改的是中间两个数,中间两个数分别代表了水平滑动和垂直滑动步长值。strides=(2,2) 分别代表水平滑动步长和垂直滑动步长都为2...
2020-07-15 16:57:57 2458
原创 普通卷积与深度可分离卷积
一些轻量级的网络,如mobilenet中,会有深度可分离卷积depthwise separable convolution,由depthwise(DW)和pointwise(PW)两个部分结合起来,用来提取特征feature map相比常规的卷积操作,其参数数量和运算成本比较低常规卷积操作对于一张5×5像素、三通道(shape为5×5×3),经过3×3卷积核的卷积层(假设输出通道数为4,则卷积核shape为3×3×3×4,最终输出4个Feature Map,如果有same padding则尺寸与输入层
2020-07-15 09:26:01 4737
转载 TensorFlow2.0 Guide官方教程 学习笔记19 -‘Accelerator-Use a GPU‘
本笔记参照TensorFlow Guide官方教程,主要是对‘Accelerator-Use a GPU’教程内容翻译和内容结构编排,原文链接:Accelerat...
2020-07-14 16:16:14 481
原创 python:类中为什么要定义__init__()方法
不用init()方法定义类定义一个矩形的类,目的是求周长和面积。class Rectangle(): def getPeri(self,a,b): return (a + b)*2 def getArea(self,a,b): return a*b rect = Rectangle()print(rect.getPeri(3,4))print(rect.getArea(3,4))print(rect.__dict__)得到结果:14 12 .
2020-07-14 14:10:18 396
原创 c++批量移动图片
现在需要把数据集拆分成训练集和验证集,数据集为香港理工大学掌静脉数据集,如图其中10张作为训练集,2张作为验证集#include<iostream>#include<opencv2/opencv.hpp>#include<string>#include<io.h>#include <direct.h>using namespace std;using namespace cv;void getJustCurrentD
2020-07-14 09:27:30 695 1
原创 郝斌老师【数据结构入门】之二叉树程序演示
需要创建的二叉树如图:#include<stdio.h>#include<malloc.h>struct BTNode{ char data; struct BTNode * pLchild; struct BTNode * pRchild;};struct BTNode * CreateBTree(void);void PreTraverseBTree(struct BTNode *);void InTraverseBTree(struct BTNod
2020-07-13 22:16:00 285
原创 niblack分割
function imagBW = niblack(imag)% Reference:% Wayne Niblack. An Introduction to Digital Image Processing. pp: 115.% 1986. Prentice/Hall International. ISBN: 013 480674 3tic;k = -0.2; b = 80; % R*R的大小choice = 1; % 1 for pixel-to-pixel computat
2020-07-09 09:19:36 369
原创 郝斌老师【数据结构入门】之树
非线性结构树树定义:专业定义:1.有且成为根的结点2.有若干互不相交的子树,这些子树本身也是一颗树通俗定义:1.树是由结点和边组成2.每个结点只有一个父结点但可以有多个子结点3.但有一个结点例外,该借点没有父结点,此结点为根结点专业术语:结点 父结点 子结点子孙 堂兄弟深度:从根结点到最底层结点的层数称之为深度,根结点为第一层叶子结点:没有子结点的结点非终端结点:实际是非叶子结点度:子结点的个数成为度树的分类一般树:任意一个结点的子结点的个
2020-07-07 22:16:07 214
原创 郝斌老师【数据结构入门】之汉诺塔
#include<stdio.h>void hannuota(int n, char A, char B, char C){ //如果是一个盘子,直接将A柱子上的盘子移到C //否则 //先将A柱子上的n-1个盘子借助C移到B //直接将A柱子上的盘子从A移到C //最后将B柱子上的n-1个盘子借助A移到C if (n == 1) { printf("将编号为%d的盘子直接从%c柱子移到%c\n", n, A, C); } else { hannuota(n
2020-07-07 20:37:26 220
原创 郝斌老师【数据结构入门】之递归
定义一个函数自己直接或间接调用自己递归满足三个条件1、递归必须得有一个明确的终止条件2、该函数所处理的数据规模必须在递减3.、这个转化必须是可解的循环和递归递归:易于理解速度慢存储空间大循环不易理解速度快存储空间小...
2020-07-06 22:24:59 226
原创 郝斌老师【数据结构入门】之队列程序演示
#include<stdio.h>#include<malloc.h>typedef struct Queue{ int * pBase; int front; int rear;}QUEUE;void init(QUEUE *);//入队bool en_queue(QUEUE *, int);//遍历void traverse(QUEUE *);bool full_queue(QUEUE*);bool empty_queue(QUEUE *
2020-07-02 22:30:35 175
算法笔记-上机训练实战指南-胡凡.zip
2019-07-10
算法笔记 晴神.zip
2019-07-10
十五个经典算法研究与总结、目录+索引.zip
2019-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人