
java
文章平均质量分 79
shangjian007
草包一个
展开
-
算法学习笔记--堆及堆排序
前言 在学习左神的算法课,对堆这种数据结构有了更深的理解,在此将课程概要记录下来,以备后查 堆结构 概念上,堆结构是一种完全二叉树。若父节点比子节点都大,叫最大堆,若父节点比子节点都小,叫最小堆。 堆的经典实现方式是使用数组。若从0位置存放数据,则通过当前节点index,可知其左右孩子节点下标分别为2 * index+1、2 * index+2,当前节点的父节点为(index-1)/ 2。若从1位置存放数据,位置为index的节点的左右及父节点的下标分别为2 * index、2 * index + 1、in原创 2020-06-18 10:18:44 · 194 阅读 · 0 评论 -
算法学习笔记--快速排序
前言 在学习左神的算法课,对快速排序有了更多的理解,在此记录,以备后查 快速排序1.0 描述: 快排1.0是基于单个支点进行递归操作。大体来讲,是选择数组arr中的某一个数作为支点pivot,经过一通操作(一般叫partition),使得左边的数均小于等于pivot,右边的数均>pivot,如此一来,pivot就待在了自已排好序的位置。然后再对左边和右边分别做同样的操作,就完成了整个数组的排序 代码: /** * 快速排序 1.0 * @param arr * @原创 2020-06-17 16:51:05 · 233 阅读 · 0 评论 -
算法学习笔记--归并排序及其应用
前言 在学习左神的算法课程,关于归并排序有些收获,在此记录,以备后查。 原理 分治的思想,将对数组arr[]排序的任务(规模为N),分为对左、右半边排序(规模各位N/2)、合并(规模为N)这三步操作。对左(或右)半边排序又可以拆分为两个更小规模的排序与一个合并的操作。如此递归,直到待排序的规模为1. 递归实现 /** * 假定左边和右边分别已经排序好,将左右两边合并成有序的序列 * @param arr 待排序的数组 * @param left arr左边界 incl原创 2020-06-17 14:04:44 · 190 阅读 · 0 评论 -
算法学习笔记--递归的时间复杂度
结论 算法学习中,常常需要用到递归函数,对于部分满足公式T(N)=a*T(N/b)+O(Nd)的算法,其时间复杂度如下: 当logba>d,O(T(N))=O(Nlogba) 当logba<d,O(T(N))=O(Nd) 当logba==d,O(T(N))=O(Nd*logN) 解释 公式T(N)=a*T(N/b)+O(Nd)中,N指问题的规模,a、b、d皆为常数。其中,N/b是子问题的规模,a为子问题的个数,O(Nd)为一层循环中,除去子问题的其它代码的时间复杂度。 注意,并不是所有递归都原创 2020-06-16 11:42:20 · 340 阅读 · 0 评论 -
Java位运算的几个骚操作
前言 这段时间在看左神(左程云)的算法课,其中有讲到几个关于位运算的骚操作。在此记录下来,以备后查。 1、使用异或^实现交换 排序算法中,经常需要用到交换,常见方法如下: void swap(int[] arr,int i,int j){ int tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } 但如果要求不使用临时变量,就地交换,咋办呢??? 这里就需要位运算来表演了,代码如下: void swap(int[] arr,int i,int j){ arr[j]=a原创 2020-06-16 00:24:55 · 326 阅读 · 0 评论 -
Centos安装FastDFS并在Springboot项目中集成其客户端
04121416@cumt.edu.cn Centos安装FastDFS并在Springboot项目中集成其客户端 这是我的第一篇技术博客,内容来自于慕课网授课讲师风间影月的收费课程《Netty/Spring Boot仿微信聊天全栈实战 从0开发到上线部署》,这里仅作笔记及技术分享,不作任何商业用途 我的需求 最近一个springboot的项目,需要存储及查看大量的小图片,因而想到要搭建一个文件服...原创 2019-07-28 14:24:50 · 409 阅读 · 0 评论 -
基于nginx+rtmp+ffmpeg的视频直播平台解决方案1--方案概述
04121416@cumt.edu.cn 目标: 从无到有搭建一个视频直播平台,支持Android移动端、linux服务器、windows等各种平台上发起视频直播,支持使用VLC工具、浏览器页面、Android客户端等多种方式播放视频流,支持视频的存储及下载。原创 2019-08-16 15:40:01 · 526 阅读 · 2 评论