算法
算法学习
developer@liyong
GISer
展开
-
c(文件)
1 文件函数 #include <stdio.h> #include <stdlib.h> int main() { FILE* fp; // 定义文件指针 if ((fp = fopen("E:/test.txt", "r")) != NULL) { while (!feof(fp)) { // 没有到文件末尾 char ch = fgetc(fp); printf("%c",ch);原创 2021-11-04 14:41:02 · 68 阅读 · 0 评论 -
数学常见问题
1 求最大公约数 int gcd (int a, int b){ return b ? gcd(b, a % b) : a; } 2 求最大公倍数 int gcd (int a, int b){ return b ? gcd(b, a % b) : a; } int mcu(int a, int b) { int t = gcd(a, b); return a * b / t; } 3 判断是否为质数 判断是否为质数(试除法) bool is_prime(int x)原创 2021-09-19 11:04:20 · 103 阅读 · 0 评论 -
常见排序算法
1 希尔排序 void xierSort(int q[], int n, int d[], int dn) { for (int k = 0; k < dn; k ++) { for (int i = d[k]; i < n; i ++) { int tem = q[i]; int j = i - d[k]; for (; j >= 0 && q[j] > tem; j -= d[k]) {原创 2021-09-14 23:38:36 · 81 阅读 · 0 评论 -
图论相关算法
1 dijkstra算法 const int N = 510; int g[N][N]; int st[N]; int dist[N]; int path[N]; // 保存路径 int n, m; void get_path(int v) { if (path[v] != -1) get_path(path[v]); printf("%d ", v); } void dijkstra() { memset(st, 0, sizeof st); dist[1] = 0;原创 2021-09-16 19:24:15 · 63 阅读 · 0 评论 -
c语言(双链表)
1 结构定义 typedef struct DLNode { int data; struct DLNode* prior; struct DLNode* next; } DLNode; 2 链表操作 头节点插入 void add2head(DLNode* L, int x) { DLNode* p = (DLNode*)malloc(sizeof(struct DLNode)); p->data = x; p->next = L->next; p->prior原创 2021-08-22 17:16:33 · 68 阅读 · 0 评论 -
c语言(单链表)
一 、 单链表 1 链表的结构 typedef struct Node { int data; Node *next; } Node; 2 链表操作 头节点插入 在这里插入代码片 #include <stdio.h> #include <stdlib.h> Node *head; // 生成链表,此处可以用随机函数随机产生数和长度代替 Node * generate(int q[], int n) { head = (Node *)malloc(s原创 2021-08-21 16:34:29 · 75 阅读 · 0 评论 -
c语言(结构体)
结构体的概念不在赘述,参考各种C语言书籍(如谭浩强的C) 1 定义 struct 类名 { 成员列表(可以是变量,函数,结构体,共同体等类型); } 变量名列表(包括数据,指针,普通变量等多种类型); ex : 初始版 struct Point { double x; double y; } P; 定义点的结构,包含两个成员x, y。 P为变量名,可以在结尾定义多个变量,如数组指针等。 ex : 拓展版 - 可以使用typedef 为结构体取更方便的别名 ex : typede原创 2021-08-20 12:47:24 · 125 阅读 · 0 评论 -
根据数据样本猜测题解
引言: 在做算法题目时,在题目结束位置都会给出数据的变化范围,或是数据样本的多少。根据数据情况有时可以大概猜出此题解法。 c/c++ 处理10的8次方条指令大约为1-2秒。 java/python 处理10的8次方条指令大约为3-4秒。 因此根据数据的状况可以猜出需要时间复杂度为多少的算法。例如一个数组的大小为10的6次方,那么如果你的算法时间复杂度为O(N^2)肯定不会过。至少需要O(logN)。 ...原创 2021-06-18 22:03:57 · 113 阅读 · 0 评论