- 博客(96)
- 资源 (71)
- 收藏
- 关注
原创 数据结构:二叉树遍历集合,树高(Java)
文章目录1.基本介绍2.二叉树示例二叉树图结果打印3.数据结构3.1结点3.2二叉树4.添加结点5.遍历5.1前序遍历前序遍历-递归前序遍历-非递归5.2中序遍历中序遍历-递归中序遍历-非递归5.3后序遍历后序遍历-递归后序遍历-非递归5.4层序遍历6.树高树高-递归树高-非递归7.调用示例1.基本介绍下面介绍的基于二叉树的基本查询的总结.二叉树的插入方法是基于二叉搜索树的规则.left<root<right.结点的高度:结点到其叶子结点的最长路径上的结点个数.结点的深度:树的根结点到
2020-08-22 11:57:37 868
原创 查找:分块查找(java)
文章目录1.排序思想2.排序流程图3.打印排序结果4.算法实现4.1数据结构4.2获取所在块4.3分块查找5.调用示例6.复杂度1.排序思想1.将待排序的数组(n)进行分块.2.例如分为s块.那么每一块的结点个数为:n/s;最后一块的结点个数:<=n/s;3.对每i块有要求第 i-1 块中结点的最大值<第 i 块中结点的最小值第 i 块中结点的最大值<第 i+1 块中结点的最小值4.先找待查找的num所在的快,然后再该块中顺序找对应的num.2.排序流程图3.打印排
2020-08-15 12:33:08 1547 1
原创 查找:二分查找(Java)
文章目录1.排序思想2.排序流程图3.打印排序结果4.排序实现5.调用示例6.复杂度1.排序思想1.前提是:排序是数组是有序的,才可以使用二分查找.在数组中查找num的角标位置2.第一次默认查找角标范围:low=0; high=数组的长度-12.每次查找的范围缩小一倍mid=(low+high)/2,根据mid位置值与待查找的值num进行比较.3.判断条件:low<=highnum==mid位置的值,则直接返回mid即可num>mid位置的值,则说明num在mid的右侧.改变low
2020-08-15 10:25:54 293
原创 算法例子:手动解析Json,按照层级打印(Java)
1.算法例子描述给定一个json字符串{ "a": { "b": { "c": { "d": "h", "j": "l", "o": { "p": "q", "r": "s" }, "t": "u" } }, "v": { "w": { "x": { "y": "z" } } } }, "e": { "f": { "i": "k" }, "m": "n"
2020-08-08 11:39:15 1239
原创 算法例子:两个大数字符串相加(java)
1.算法例子计算两个数字字符串相加.例如:s1 = “8763845638363774673957584937685934737”;s2 = “763845638363774673957584937685934”;计算s1与s2的和.2.算法设计1.将两个字符串转化成char数组 c1[],c2[].2.定义个存储结果数组,result[];其长度为c1和c2数组长度的最大值+1,因为两个数相加,最大值为长度进一位.3.逆向遍历char两个数组.4.取出值两个值.n[i],n[j].r
2020-08-06 21:31:55 5617 1
原创 排序:希尔排序(C)
文章目录1.排序思想2.排序流程图3.排序结果4.代码实现4.1 定义数据结构4.2 定义方法集合4.3 方法实现5.调用示例6.复杂度1.排序思想1.将待排序数组进行分组.这个分组的规则是按照增量进行分组.例如:增量为d,也就是两个元素位置相差d在一个组内.分为d组:第0组:[0,0+d,0+2d,0+3d,…]第1组:[1,1+d,1+2d,1+3d,…]第d-1组:[2,2+d,2+2d,2+3d,…]2.组内进行插入排序.3.不断的改变d的大小,然后重复第一步和第二步.4.最后一
2020-08-06 10:13:33 1870
原创 排序:插入排序(C)
文章目录1.排序思想2. 排序流程图3.排序流程4.排序设计5.排序实现5.1 定义数据结构5.2 定义排序方法5.3 实现排序方法6.调用示例7.复杂度1.排序思想将待排序数组划分为两个区间1.第一部分[0~i-1]:已排序区间2.第二部分[i~n-1]:未排序区间排序过程:1.从未排序区间取出第一个元素,按照有序的插入到已排序的区间中.2.结束条件:未排序区间中的元素为空.2. 排序流程图3.排序流程待排序数组:[3,7,4,2,8,6,10,11,5,1]第0次排序:[3][
2020-08-05 20:01:30 213
原创 算法例子:拆分(按照奇偶位置)双向链表为两个链表(Java)
1.例子描述将一个双向链表,按照奇偶位置进行拆分成两个链表即:1.双向链表中偶数位置的结点组成一个链表.2.双向链表中奇数位置的结点组成一个链表.3.拆分完成后,双向链表变成了空链表.2.实现思路4.打印结果待分割的链表:head->tail:[1,2,3,4,5,6,7,8,9,10]---------存储偶数位置结点的链表----------head->tail:[2,4,6,8,10]tail-->head:[10,8,6,4,2]---------存储奇
2020-08-04 20:31:24 2326
原创 排序:归并排序(C)
1.思想1.1 思想流程图1.2 思路解释归并排序思路:1.总体思路:将待排序数组进行拆分成多个分组,然后将拆分后的分组有序的合并.2.现将数组拆分成分组长度(length=1)最小分组.然后将相邻分组两两进行有序合并.2.1 如果总的分组数为偶数,那么正好两两合并.2.2 如果总的分组数为奇数,那么剩下的单个的直接拼在新数组的后面即可.2.3.生成一个按照长度为length合并后的新数组.3.将新的数组进行第二步的操作(length=length*2).直到length>=待排序
2020-08-03 17:52:13 179
原创 排序:基数排序(C)
文章目录1.思想1.1 例子1.2.思想介绍2.运行结果3.算法实现3.1 定义数据结构3.2 定义方法集合3.3 方法实现3.4 另外的实现思路1.思想1.1 例子1.2.思想介绍1.基数排序是在箱排序的基础之上进行扩展和完善的2.通过判断待排序的数组中的位数,决定进行创建箱子的个数和遍历的次数.例如:待排序中最多的位数为3位,那么就需要创建三个箱子(当然也可以创建两个,进行复用,记得复用之前要清除之前的箱子),这里我就不复用了.那么需要进行遍历三次3.开始排序(就是遍历装箱操作)3.1
2020-07-31 23:59:35 365
原创 排序:快速排序(C)
文章目录1.排序思想2.算法执行结果3.算法实现3.1 数据结构3.2 单次划分方法3.3 快速排序方法3.4 打印数组方法3.5 调用示例4.复杂度1.排序思想1.每次取待排序数组的第一个的数据(x),然后将当前的待排序的数组进行划分.划分成三部分. (小于x的数组)(x)(大于x的数组).2.对 (小于x的数组)和 (小于x的数组)进行划分.就这样递归调用.最关键的就是划分方法:划分的思想:请查看图3.使用递归调用划分方法即可.2.算法执行结果3.算法实现3.1 数据结构type
2020-07-31 15:21:55 211
原创 排序:堆排序(C)
1. 堆排序思想1.1 思想概括基于完全二叉树进行操作排序的第一步:创建大根堆(或者小根堆)第二步:取堆顶关键字与无序区最后一个元素互换.然后剩下的无序区元素进行第一步.最后直到无序区元素为1个,结束循环.解释:大根堆:根结点大于左右子孩子小根堆:根结点小于左右子孩子注意:大根堆或者小根堆是完全二叉树.1.2 准备完全二叉树因为堆排序是基于完全二叉树,则提前准备好一个完全二叉树.待排序数组R=[10,15,56,6,33,5,26,8]完全二叉树:1.3 创建大根堆这里以建立
2020-07-31 10:42:32 1082 1
原创 算法例子:二叉树的基本操作(Java)
平时我们也会经常见到二叉树这样的数据结构,这里就对二叉树的基本操作简单的实现以下1.二叉树的创建2.二叉树的插入数据(遵循left<root<=right)3.打印二叉树所有结点(中序遍历,有序的)4.打印二叉树的深度5.打印指定层级的所有结点.6.使用示例先看一个例子:顺序插入数组中的数据:int[] array = new int[]{50, 23, 45, 70, 63, 36, 80, 99, 12};插入的时候,保证left<root<right.最后
2020-07-24 15:13:14 537
原创 算法例子:查找字符串中连续不重复最长字符串和长度(Java)
1.思路2.结果字符串:abacbefkb开始遍历:链表的变化情况:a:长度:1 链表:[a]b:长度:2 链表:[a,b]a:长度:2 链表:[b,a]c:长度:3 链表:[b,a,c]b:长度:3 链表:[a,c,b]e:长度:4 链表:[a,c,b,e]f:长度:5 链表:[a,c,b,e,f]k:长度:6 链表:[a,c,b,e,f,k]b:长度:4 链表:[e,f,k,b]遍历结束连续不重复的字符串:acbefk 长度:6这是想到的是使用滑动窗
2020-07-18 16:03:51 1485
原创 算法例子:反转单向链表(Java)
反转单向链表1.思想因为一个链表是一个单向的,如果要反转,肯定是要遍历的,并且使链表是反转.可以在闲的链表中使用头插入法,那么新链表和原链表顺序是逆向的.达到反转效果.反转链表方法:reverseLinkList(Node head)2.创建链表节点public class Node { public int value;//链表的值 public Node next;//下一节点 public Node() { } public Node(int v
2020-07-17 23:28:38 410
原创 算法例子:求出数组中所有组合(两个数之和等于指定数)(Java)
这里介绍三种方法方法1思路:双重for循环,每一个数和所有其他的数进行相加,如果等于目标值则打印出时间复杂度 :O(N2)空间复杂度 :O(1)public static void main(String[] args) { int[] nums = new int[]{1, 8, 9, 6, 4, 3, 7}; int target = 10; method1(nums, target); }public static void
2020-07-09 23:57:57 5580
原创 排序:双向冒泡排序(C)
这是常用的一些基本排序算法.数据结构先定义公共的数据结构typedef int KeyType;typedef struct { KeyType key;}RecType;typedef RecType SeqSortList[MAXSIZE+1];//表中的0元素空着或用作哨兵单元一般把数组中的第0个位置预留出来,为了就作为哨兵,进行两个数据进行交换时,可以把哨兵作为...
2019-11-07 18:21:45 1261
原创 排序:桶排序(又称箱排序,C)
箱排序1.例子和运行结果例子:运行结果:2.排序思想1.每个数都是由0-9组成,开始创建10个箱子(序号0-9).2.对待排序进行遍历,按照待排序个位数有序的添加对应箱子中,注意,是有序的添加.(这个可以使用快速排序,直接插入,选择插入…等).3.顺序遍历所有的箱子.然后顺序的读取箱子中的值,顺序存储到数组中,此时这个数组就是有序的数组注意:这里最多创建了10个箱子,如果知道了...
2019-11-06 17:13:23 779 1
原创 银行家算法-操作系统(C语言)
1.银行家算法银行家算法是操作系统中死锁避免的一种算法,这是一个理想化的方法,一般实际中很少用到,因为要提前知道每一个进程申请最大的需求量,这一般很难控制.算法的思想:1.确认了系统中每个资源的资源量.2.并且也确认了每个进程对每个资源的最大需求量.3.当给每个进程进行申请对应资源的时.3.1.如果此次申请的资源数+已经持有的资源数大于了该进程的最大需求量,那么则拒绝分配.3.2.如...
2019-11-04 16:48:23 1294 1
原创 LRU算法-模拟页面置换(C语言)
1.LRU算法 LRU算法(Least Recently Used):最近最久未使用法,操作系统中页面置换中的经典算法, 当内存中分配的页面满的时候, 则需要将内存中最久未被使用的页面用新的页面替换出去. ![Lru算法模拟页面置换](https://img-blog.csdnimg.cn/20191104093628432.jpg?x-oss-process=image/watermar...
2019-11-04 10:42:30 3761
原创 Android Html.fromHtml支持字体大小和加粗(可扩展)
先看效果图开发的时候,需要使用到富文本,如果用到了Html标签,系统不支持字体大小和加粗样式,那么就需要自己解析写.使用例子 String htmlStr2 = "<span style='color:#EE30A7;font-size:20px'>Html" + "<font color='...
2019-09-17 17:34:40 21933
原创 Android代码动态设置圆角,颜色,线条背景
开发中平时用到了圆角背景,但是每个圆角背景都不一样,这样还要创建多个xml布局,为了简单快捷,可以使用代码创建圆角背景.这里以创建矩形圆角背景为例.GradientDrawable.RECTANGLE.先看效果图常用方法(创建xml)代码 动态创建代码修改已有布局创建xml<?xml version="1.0" encoding="utf-8"?><shap...
2019-09-09 18:14:37 6911
原创 Android常用工具类集锦
单链表操作欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 C
2019-04-19 17:33:37 336
原创 解决自定义View,不执行onDraw方法
自定义View,不执行onDraw方法描述不执行原因自定义View例如解决办法办法1办法2描述在自定义View的时候,发现不执行onDraw方法,在网上查了方法,1.在构造方法里增加setWillNotDraw(false)方法,发现不起作用.2.主动的调用invalidate();方法,也不起作用,经过查找发现了下面的问题.特此记录下来,希望可以帮助到大家.不执行原因1.自定义的V...
2019-02-18 10:55:36 4938
原创 Glide等比例动态加载网络图片
Glide动态加载等比例网络图片方法11.1设置ImageView布局 <ImageView android:id="@+id/load_image" android:layout_width="wrap_content" android:layout_height="wrap_content" />1.2获取图片宽和高Glide.with(mContext).
2017-10-31 19:33:23 5244 1
原创 小米5s手机与AndroidStudio(Application Installation Failed)
在Android开发中,是否遇到了小米5手机已经到了AndroidStudio,但是app直接安装不到小米5s手机,也不能通过adb命令安装到手机上.按照下面的步骤,操作小米5手机.第一步:打开开发者选择项模式在设置->关于手机->MIUI版本,连续点击MIUI版本,就可以打开开发者选项模式第二步-开启开发者选项和USB调试在设置->更多设置->开发...
2017-03-30 17:02:52 2969
原创 EditView封装(正则表达式)
Android封装EditText(正则表达式)EditText方法BaseFilter过滤器封装EditTextView过滤器的长度优化1.EditText方法 <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:digits="0123"
2017-01-06 19:27:38 1172
原创 树的定义和基本操作
树(一般树)定义和基本操作树的术语树的结构特点树的基本操作树的存储结构树的遍历定义和基本操作树是n(n>=0)个结点的有限集合.当n=0时,集合为空,称为空树.在任意一颗非空树中,有且仅有一个特定的结点称为根.当n>1时,除根结点以外的其余结点可分成m(m>=0)个不相交的有限结点集合T1,T2….Tm.其中每个集合本身也是一棵树,称为根的子树. 其中: (1)有且仅有一个称
2016-12-29 12:27:16 6763
原创 矩阵的操作
数组和串矩阵稀疏矩阵对角线矩阵三角形矩阵对称矩阵矩阵转换算法1.矩阵矩阵是科学和工程计算问题中经常运用的一种数学工具.矩阵是按行列排列的一组数据.这些数据元素称为数据元素.在计算机处理中,矩阵一般用一个二维数组表示和存储.2.稀疏矩阵稀疏矩阵是0元素较多且出现的位置无固定规律的矩阵.存储稀疏矩阵时只存储非0元素,这样可以有效的利用存储空间.因为非0元素位置不固定,可以用(行号,列号,元
2016-12-22 17:09:02 748
原创 队列的定义及其基本操作
队列的定义及其基本操作队列的定义顺序队列及其操作循环队列及其操作链队列及其操作1.队列的定义队列是限制结点插入操作固定在一端进行,而结点的删除操作固定在另一端进行的线性表. 队列犹如一个两端开口的管道.允许插入的一端称为队头,允许删除的一端称为队尾.队头和队尾各用一个”指针”指示,称为队头指针和队尾指针.不含任何结点的队列称为”空队列”.队列的特点是结点在队列中的排队次序和出队次序按进队
2016-12-20 23:52:44 24734 1
原创 链栈的基本操作
链栈的基本操作定义结构体链栈的基本操作 压栈读栈弹栈求栈的长度1.定义1.1栈栈(stack)是一种特殊的线性表.栈是限定结点插入和删除只能在同一端进行的线性表. 栈犹如一个一端开口一端封闭的容器.可插入和删除的一端称为栈顶,另一端称为栈底. ”栈顶指针”:指示最后插入栈中的结点位置,处于栈顶位置的结点称为栈顶结点.”栈底指针”:指示栈底位置,它始终指向最先插入的结点的下面
2016-12-16 16:13:25 1995
原创 顺序栈操作
顺序栈操作定义结构体顺序栈的基本操作 创建栈判栈空压栈弹栈读栈置空栈求栈长度1.定义栈(stack)是一种特殊的线性表.栈是限定结点插入和删除只能在同一端进行的线性表. 栈犹如一个一端开口一端封闭的容器.可插入和删除的一端称为栈顶,另一端称为栈底. ”栈顶指针”:指示最后插入栈中的结点位置,处于栈顶位置的结点称为栈顶结点.”栈底指针”:指示栈底位置,它始终指向最先插入
2016-12-15 17:02:41 918
原创 算法-线性表的查找
线性表-查找定义结构体顺序查找改进的顺序查找快速顺序查找有序表的顺序查找1.定义查找又称检索,查找的第一是根据定值,在数据元素集合中搜索是否存在与给定值对应的数据元素. 查找包含以下几个要素 1.查找表.查找表是查找的对象,是同类数据元素的集合. 2.查找关键字.用于表示查找表中数据元素的数据项组合. 3.查找值.查找的目标 4.查找结果.执行查找操作的输出.
2016-12-14 19:08:52 1082
原创 算法-线性表常见排序(插入,交换,选择)
线性表-排序定义结构体直接插入排序简单交换排序简单选择排序1.定义基于线性表的排序 排序是计算机数据处理的基本操作和重要技术,能有效提高一个数据处理系统的运行效率. 排序设计要的几个要素 1.排序对象.待排序对象,通常是一个线性表 2.排序标准.定序的依据,由数据元素中一个或者一组数据项充当,这些数据项称为排序关键字,简称关键字 3.排序方向.按照关键字递增还是递减排
2016-12-14 15:53:59 2192
原创 线性表-数据查重算法
线性表-数据查重定义基本思想结构体无序线性表查重有序线性表查重1.定义线性表是计算机最常见的一种数据结构.记录文件,数组,操作系统的进程队列等都是这种数据结构,它们或者用顺序存储结构,或者用链存储结构.下面介绍都是基于线性表的应用 数据查重是查看一个线性表中数据元素或其组成的数据项是否重复存储为多个结点.所线性表的存储结构不同,查重算法也不同;查重的目的不同,算法也不一样.就查重而言
2016-12-13 22:10:55 3324
原创 顺序表的基本操作
顺序表的基本操作定义结构体创建一个顺序表展示顺序表数据添加插入随机插入定位删除指定位置的数据合并两个顺序表1.定义线性表示将结点沿相同方向(例如:从左向右),按照”一个接一个地排列”的方式组织数据形成的一种数据结构 线性表是n(n>=0)个同类结点的有限序列 线性表在计算机中有两种物理存储结构:顺序存储结构和链存储结构 顺序存储结构特别适合线性表的存储,是计算机中最简
2016-12-12 19:10:14 6888
原创 双向链表
双向链表定义结构体创建一个双向链表展示双向链表中的数据元素查找双向链表中指定位置的结点向双向链表中指定位置插入结点删除双向列表指定位置的的结点1.定义循环链表和双向链表是对单链表的改进,仍属于链存储结构 双向链表的结点包括一个数据域和两个指针域,后继指针和前继指针域 双向链表的后继链和前继首尾相连,为空双向链表,又称双向循环链表 双向链表是一种对称结构,提供了向前搜索和向
2016-12-11 16:47:06 614
原创 循环链表
循环链表定义结构体创建空循环链表展示循环链表的节点数据创建使用头指针的循环链表创建使用尾指针的循环链表合并使用尾指针的循环链表1.定义循环链表和双向链表是对单链表的改进,仍属于链存储结构 循环链表(简称环链表)是在单链表的基础上,把终结点指针域的值由”空”改为指向头结点的”指针”,从而使链表首尾相接,形成一个”圆形”,故称循环链表 在创建循环链表(空表)时,其头结点指针域的指
2016-12-10 23:40:15 902
原创 单链表基本操作(2)
单链表基本操作2公共结构体模拟测试链表展示链表数据定位 按号定位 按值定位求链表长度插入删除合并1.公共结构体创建结构类型,在CS.c文件中typedef struct node{ int data; struct node *next;}LINKLIST;2.模拟测试链表在Link.h写出方法声明/* 模拟链表数据 */LINKLIST *te
2016-12-09 13:58:55 640
原创 单链表基本操作(1)
单链表基本操作创建创建头插入加载尾插入加载创建空链表创建一个单链表,且为空表,并且返回链表 创建结构类型,在CS.c文件中typedef struct node{ int data; struct node *next;}LINKLIST;在Link.h写出方法声明#include <stdio.h>#include "CS.c"/* 创建一个空单链表 */
2016-12-08 16:39:41 1489
希尔排序(C).zip
2020-08-06
直接插入排序.zip
2020-08-05
拆分双向链表.zip
2020-08-04
C语言归并排序.zip
2020-08-03
二叉树_基本操作.zip
2020-07-30
窗口机制_java.zip
2020-07-30
箱排序和基数排序(C)
2019-11-06
矩阵的基本操作和转换
2016-12-22
ScrollerView增加标题,并控制显示和隐藏
2015-06-25
自定义标题
2015-02-12
使用注解和反射构建数据库框架
2015-02-10
自定义日历控件
2015-01-23
通讯录-快速定位
2015-01-20
横向和纵向ViewPager
2015-01-19
OS_Project.zip
2019-11-04
Android Html支持字体大小和加粗样式(可扩展)
2019-09-17
Android动态创建圆角背景
2019-09-09
APK反编译工具-mac
2015-07-24
Intent传递数据
2015-06-24
httpServerDemo
2015-04-29
客户端源码
2015-04-29
ViewPager切换动画
2015-03-24
Android图像处理
2015-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人