![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构及相关算法复习
部分算法使用C来实现
Alicization~Iris
做一个低调的人……
展开
-
归并排序-(C语言实现)
#include <stdio.h> #include <stdlib.h> /**整体思想:分治 + 递归*/ // 归并两个已经有序的数组,L、M和R分别是左边界、分界点和右边界 // 这里将右边数组的第一个元素的下标作为了分界点 void merge(int array[], int L, int M, int R) { // 求出左右两部分数组的大小 int LEFT_SIZE = M - L; int RIGHT_SIZE = R - M + 1原创 2021-09-21 16:23:20 · 384 阅读 · 0 评论 -
全排列问题-(C语言实现)
#include <stdio.h> #include <stdlib.h> void swap(int array[], int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } void print(int array[], int n) { int i; for (i = 0; i < n; i++) { printf原创 2021-09-20 22:22:44 · 342 阅读 · 0 评论 -
堆排序-(数组实现 C语言版本)
#include <stdio.h> #include <stdlib.h> // 交换函数,交换数组中的两个数 void swap(int array[], int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } // 维护tree中下标为i的结点,使其满足堆的性质 // n: tree中结点的数量 // i: 当前要维护的结点的下标 void heapif原创 2021-09-20 21:07:06 · 144 阅读 · 0 评论 -
线段树-(数组实现 C语言版本)
自己在网上重新学习了线段树之后,写了一下线段树的比较标准的写法,包含测试的过程。 #include <stdio.h> // 线段树的最大结点数,可根据具体题目进行更改 #define MAX_LEN 1000 // 递归建立线段树 // arr: 存放原始数组的数组 // tree: 存放线段树的数组 // node: 当前遍历的结点 // tree[node]表示的是原始数组中start到end范围内的数字的和(包含start和end所在位置) void build_tree(int a原创 2021-09-20 09:47:46 · 141 阅读 · 0 评论 -
二叉树的先序、中序和后序遍历(Java实现)
通过牛客网上的题目来复习一下二叉树的先序、中序和后序遍历,并用Java实现 实现二叉树的先序、中序和后序遍历 题目大意:给定一个二叉树的根结点,分别进行先序、中序和后序遍历,将遍历得到的序列分别放在三个一维数组中,然后返回三个一维数组组成的二维数组(可类比C语言的实现来理解): import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = nu原创 2021-09-13 17:22:22 · 538 阅读 · 0 评论