随笔分类 - 数据结构与算法
摘要:问题与解答 问题描述 有一棵无限大的完全二叉树,该二叉树自上而下、自左而右从1开始编号。从某一个结点到根结点(编号是1的结点)都有一条唯一的路径,比如从5到根结点的路径是(5, 2, 1),从4到根结点的路径是(4, 2, 1),从根结点1到根结点的路径上只包含一个结点1,因此路径就是(1)。对于两
阅读全文
摘要:ADT 结构声明 #include<stdio.h> #include<stdlib.h> #define ElementType int struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *Sea
阅读全文
摘要:问题与解答 问题描述: 假设用于通信的电文由 n(2≤n≤30)个字符组成,字符在电文中出现的频度(权值)为 w1 w2… wn,根据该权值集合构造哈夫曼树,并计算该树的带权路径长度。 输入说明: 输入分为两行。第 1 行为 n 的值,第 2 行为 n 个整数(数值不超过 100),表示每个字符在电
阅读全文
摘要:查找前提 有序序列 查找元素 递归实现 代码 #include<stdio.h> int BinarySearch(int a[], int left, int right, int x) { if(left > right) return -1; /*避免溢出:int mid = left + (
阅读全文
摘要:全排列 基本思想:递归、散列 代码实现 #include<cstdio> const int maxn = 11; int n, P[maxn], hashTable[11] = {false}; void generateP(int index) { if(index == n+1) /*递归边界
阅读全文
摘要:基本思想 局部最优叠加-》整体最优 区间贪心 区间不相交问题 问题描述 给出N个开区间(x,y),从中尽可能多得选取开区间,使得这些开区间两两没有交集。 做法 总是先选择左端点较大的区间。 代码实现 #include<stdio.h> #include<algorithm> using namesp
阅读全文
摘要:排序 冒泡排序 思想:每次遍历找最大,交换到最后。进行n次 基本操作:相邻交换 代码实现: for(i = 1; i <= N-1; i++) /*外层循环:计数*/ { for(j = 0; j <= N-i; j++)/*内层循环进行比较与交换*/ { if(a[j+1] < a[j]) { i
阅读全文
摘要:简要介绍Two pointer这一编程方法,包括它所能解决的基本问题以及在归并排序和快速排序中的应用。
阅读全文