- 博客(16)
- 收藏
- 关注
原创 5.1 基于循环的三基本排序:冒泡、简单选择、直接插入
差别和异同 相同:对于数组类型,这三种排序都是用二重循环去实现的 具体思路: 冒泡:第i次循环,把第i大的数甩到数组末尾 简单选择:第i循环,把第i小的数和下标i的元素交换 直接插入:第i次循环,前面i个数都有序 稳定性差别: 在常见的排序算法里,有五种是不稳定的(不稳定:排序前是 1,1 排序后虽然还是1,1,但是第二个1原先在第一个位置上) 简单选择不稳定,快堆折归(快排、堆排...
2020-03-10 18:05:01
217
原创 dijkstra算法
看更多 算法的流程 代码 void dijkstra_main(int** test,int size,int start_pos) { if(size<=0 || test == NULL || start_pos < 1) return ; dijkstra_node* sup = (dijkstra_node*) malloc(sizeof(dijkstra...
2020-03-10 17:51:03
262
原创 图的dfs与bfs
看更多 思路简介 图的bfs极度类似树的层次遍历,用队列去实现。dfs则极度类似树的非递归遍历,用栈去实现。 代码 //-------------------我是DFS的开头------------------------------ void dfs_base_matrix_init(int** data,int size) { if(data == NULL || size &l...
2020-03-10 17:46:10
251
原创 生成图
为什么要生成图 在写和图有关的数据结构的算法的时候,总是需要数据的,每个用例都手动的去初始化一个二维数组或者邻接表很麻烦的。 无向无权图 int** init_graph_matrix(int num_spot){//由边随机生成一个无向图 int i ;int j ; i = j =0 ; srand(time(NULL)); int** data = (int**) mall...
2020-03-10 17:43:09
743
原创 层次遍历二叉树
想看更多 队列简介 对于一些资源调度问题,FIFO的方法比较常用,比如操作系统的页面置换算法,在一些具体场景里(银行、医院等排队功能当然优先考虑用队列去实现了) 除此之外,队列还可以用于二叉树的层次遍历。 层次遍历的想法 1. 根节点加入队列 2. 进入循环,出口条件是队列为空 3. 出一个节点,并且把他的左右子加入队列 4.可以用一个特殊的#号代表换行,最开始根和...
2020-03-10 17:37:25
265
原创 非递归先序遍历二叉树
为什么非递归? 众所周知,二叉树的递归遍历 = 三行代码,那么什么要使用非递归去实现呢? 1.难度高的面试、考试可能会考(比较重要) 2.帮助我理解栈和递归的关系(有点重要但不是那么重要) 非递归的思路 所谓非递归,不过是通过使用栈去把递归的过程模拟出来罢了。栈的操作也很简单:左子能入就入左子,右子能入就入右子,没有子入就弹出。 非递归的代码(先序) /* 用例 1234...
2020-03-10 17:30:30
491
原创 生成一个二叉树
想看更多 二叉树的简介 二叉树本身的意义不重要,只学二叉树的话会觉得没什么用,因为他不像栈那样为复杂循环提供了行之有效的解决办法。学习二叉树的目的其实是为了后面的排序树、平衡树、堆等知识做准备。 生成一颗二叉树 生成二叉树的方式大概有两种 第一种是用某种序列+#号(用来代表空指针) 第二种是用中序序列 + 任意一个其他序序列 (前序、后序、层次 ,这种方法不需要用符号去代表空指针)生...
2020-03-10 17:25:37
2210
原创 表达式求值
想看更多 什么叫中缀表达式? 我们从小学开始学的那种算式,比如(1+2)*7 就是一个中缀表达式。 当任意一个中缀表达式“加满”括号,例如: 96/12+4*2 →加满括号→ ((96/12)+(4*2)) →逐步拆括号 →生成一个二叉树。 这个树是有规律的:操作符号(+-*/)都在非叶子节点上,且上一层的节点后算,下一层的节点先算。 对这个树进行先序遍历,所得到的序列就是前缀表...
2020-03-10 17:08:47
545
原创 栈的简介
1.栈的简介 1.1 基本操作 栈的基本操作:init、pop、push、get_length…,因为C本身不提供栈这种数据结构,所以需要自己手动实现,实现代码: #include "stack.h" #include "stdio.h" #include "stdlib.h" stack* initStack(int* data, int size ) { int i = 0 ; ...
2020-03-10 16:48:48
328
原创 数据结构与算法(C实现)
目录 第一部分:线性表 1.栈 1.1栈的简介 1.2 中缀表达式求值 2.队列 第二部分:树和图 3.二叉树 4.图 4.1 生成图的数据 4.2 DFS与BFS,递归与非递归 4.3 单源最短Dijkstra 第三部分:排序和查找 5.排序 5.1 冒泡 5.2 简单选择 5.3 直接插入 5.4 快排 5.5 二路归并 6.查找 6.1二分查...
2020-03-10 16:16:41
551
原创 Android.Sensor.Step_Counter应用例子
1.背景介绍: 本文将实现一个名为Step_Counter(Boolean A)的函数,功能是统计从Step_Counter(Boolean.TRUE)到Step_Counter(Boolean.FALSE)这段时间里用户的步数。 首先查阅API文档,其中关于Step_Counter的描述如下: TYPE_STEP_COUNTERA constant descri...
2018-05-02 19:49:58
2379
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅