
数据结构与算法
不闻窗外事
学无止境
展开
-
最大子序列和
#include <stdio.h>//由create_data.py产生的随机数int a[] = {-66,-83,14,-95,-7,42,39,-72,-100,-31,-57,47,99,-84,-96,-45,-38,-76,-65,85,39,83,28,16,-41,92,60,44,90,83,-40,17,-27,-75,6,88,81,-12,77,60,...原创 2019-12-24 19:10:36 · 121 阅读 · 0 评论 -
求最大公约数
#include <stdio.h>//欧几里得算法unsigned int gcd(unsigned int m, unsigned int n){ int t; while (n != 0) { t = m % n; m = n; n = t; } return m;}int ...原创 2019-12-24 19:08:52 · 110 阅读 · 0 评论 -
选择第k个最小值
#include <stdio.h>#define CutOff (3) //截至范围void swap(int *a, int *b){ int tmp = *a; *a = *b; *b = tmp;}void insert_sort(int arr[], int len){ for (int i = 1; i < len; i++) ...原创 2019-12-24 19:05:00 · 520 阅读 · 0 评论 -
最大子序列和问题的三种实现(c语言)
#include <stdio.h>//由create_data.py产生的随机数int a[] = {-66,-83,14,-95,-7,42,39,-72,-100,-31,-57,47,99,-84,-96,-45,-38,-76,-65,85,39,83,28,16,-41,92,60,44,90,83,-40,17,-27,-75,6,88,81,-12,77,60,...原创 2019-12-09 19:28:52 · 968 阅读 · 0 评论 -
karatsuba计算大数乘法
#include <string>#include <iostream>#include <sstream>using namespace std;//扩展到2的幂void extend_str(string &s, size_t &len){ while (len & (len - 1)) { ++len; }...原创 2019-10-24 16:40:26 · 663 阅读 · 0 评论 -
分块计算大数乘法
1234*5678 = 12 | 34 x 56 | 78 =====> 34*78 + 12*78*100 + 34*56*100 + 12*56*10000 #include <iostream>#include <string>#include <sstream>using namespace...原创 2019-10-23 11:02:54 · 424 阅读 · 0 评论 -
简单大数乘法的C 实现
12*34 = 12 x 34 ----- 48 36 ----- 408#include <iostream>#include <string>using namespace std;//进位加,递归处理所有的进位void carry_add(...原创 2019-10-22 19:46:20 · 245 阅读 · 0 评论 -
二叉树的遍历
概念:二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。方法: 1、前序遍历:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。 2、中序遍历:若树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。 3、...原创 2019-10-11 15:55:16 · 130 阅读 · 0 评论 -
算法的相关概念
1、算法 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作2、算法具有五个基本特性 1.输入:算法具有零个或多个输入 2.输出:至少有一个或多个输出 3.有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无线循环,并且每一个步骤在可接受的时间内完成 4.确定性:算法的每一步骤都具有确定的含义,不会出现二义...原创 2019-10-08 16:04:45 · 481 阅读 · 0 评论 -
数据结构的基本概念和术语
1、数据 数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。2、数据元素 数据元素是组成数据的、有一定意义的基本单位在计算机中通常作为整体处理。也被称为记录。3、数据项 一个数据元素可以由若干个数据项组成。是数据不可分割的最小单位4、数据对象 数据对象是性质相同的数据元素的集合,是数据的子集5、数据结构 ...原创 2019-10-08 14:14:12 · 209 阅读 · 0 评论 -
《编程珠玑》第13章算法的简单C语言实现
//链表class IntSetList{public: IntSetList(int maxelements, int maxval){ sentinel = head = new node(maxval, NULL); n = 0; }private: int n; struct node{ int val; node *next; node(int v,...原创 2019-09-06 11:39:51 · 155 阅读 · 0 评论 -
《编程珠玑》第12章算法的简单C语言实现
void genknuth(int m, int n){ for (int i = 0; i < n; i++) { if (rand() % (n - i) < m) { cout << i << endl; m--; } }}void gensets(int m, int n){ std::set<int&g...原创 2019-09-05 10:20:07 · 199 阅读 · 0 评论 -
《编程珠玑》第11章排序算法的简单C语言实现
int arr[10] = { 31, -41, 59, 26, -53, 58, 97, -93, -23, 84 };void swap(int a, int b){ int tmp = arr[a]; arr[a] = arr[b]; arr[b] = tmp;}//插入排序1void isort1(int n){ for (int i = 1; i < n; ...原创 2019-09-04 15:22:19 · 162 阅读 · 0 评论 -
《编程珠玑》第八章算法的简单C语言实现
#define max(a, b) ((a)<(b)?(b):(a))int arr[] = {31, -41, 59, 26, -53, 58, 97, -93, -23, 84};//扫描算法int scanning_algorithm(){ int maxsofar = 0; int maxendinghere = 0; for (int i = 0; i <...原创 2019-09-02 12:43:45 · 219 阅读 · 0 评论