
数据结构及相关算法复习
部分算法使用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 · 454 阅读 · 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 · 411 阅读 · 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 · 180 阅读 · 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 · 198 阅读 · 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 · 580 阅读 · 0 评论