趣学算法
You图碧
努力学习
展开
-
算法很美03算法思想(分治)
https://git.coding.net/lanqiao/algorithm.git01分治法➢分治法(divide and conquer, D&C) :将原问题划分成若干个规模较小而结构与原问题一致的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。➢容易确定运行时间,是分治算法的优点之一。➢分治模式在每- -层递归上都有三个步骤:-分解(Divide...转载 2019-11-07 14:00:56 · 187 阅读 · 0 评论 -
算法很美02之如何评估算法性能
链接:https://blog.csdn.net/qq_41765114/article/details/88354772O(n):O(n2):O(n2):原因:O(lgn):原因:2的x次方 = n 所以 x =lgn还有常数阶o(1):几条语句各级别算法复杂度分析:① n! 弱上界是 nn,因此增长速度非常快,即超慢。② 2^n,指数级爆发式增长,增...原创 2019-11-04 01:58:29 · 264 阅读 · 0 评论 -
算法很美02递归和排序
转载c++:https://blog.csdn.net/qq_38265137/article/details/85628925习题:https://blog.csdn.net/qq_44391957/article/category/8657987java:https://blog.csdn.net/qq_38265137/article/details/85628925目录...转载 2019-11-03 03:33:06 · 442 阅读 · 0 评论 -
算法很美01位运算的奇巧淫技
目录01位运算的奇巧淫技位运算的简单应用1.判断奇偶数:2.获取二进制位是1还是0(两种解决方法):3.交换两个整数变量的值:4.不用判断语句,求整数的绝对值:位运算的例题题1:找出唯一成对的数题2:找出落单的那个数题3:二进制中1的个数题4:是不是2的整数次方题5:将整数的奇偶位互换题6:0~1间浮点实数的二进制表示题7:出现k次与出现1次...转载 2019-11-02 02:24:47 · 391 阅读 · 0 评论 -
[LeetCode] 277. Find the Celebrity 寻找名人$
参考:https://www.cnblogs.com/grandyang/p/5310649.html在一个派对上有n个人,其中有一位名人。名人的定义是其他n-1个人都认识他,但他不认识任何一个人。要找出这位名人,只允许问A是否认识B。实施一个函数,找出名人,如果有返回他的label,如果没有返回-1。Example 1:Input: graph = [ [1,1,0],...原创 2019-10-30 03:12:32 · 547 阅读 · 0 评论 -
[LeetCode] 80. Remove Duplicates from Sorted Array II 有序数组中去除重复项之二
参考:https://www.cnblogs.com/grandyang/p/4329295.html给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。链接:https://leetcode-cn.com/problems/remove-dupl...原创 2019-10-30 02:55:14 · 138 阅读 · 0 评论 -
26Remove Duplicates from Sorted Array :Easy
参考:https://www.cnblogs.com/grandyang/p/4329128.html给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。这道题要我们从有序数组中去除重复项,和之前那道Remove Duplicates fr...原创 2019-10-30 01:26:43 · 125 阅读 · 0 评论 -
27Remove Element :Easy
参考:https://www.cnblogs.com/grandyang/p/4606700.html给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。链接:https://l...原创 2019-10-30 00:23:17 · 105 阅读 · 0 评论 -
数据结构代码小总:动态数组引论 哈夫曼
动态数组引论:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>//1MB = 1024*1024typedef struct { char name[995]; int id;}node;typedef struct ...转载 2019-07-24 00:17:51 · 224 阅读 · 0 评论 -
数据结构代码小总:图 查找
DateConflict#include <stdio.h>/*step1:将图的结点按照结点度的大小进行递减排序(相同度的节点次序没有要求)step2:用第一种颜色对第一个节点进行着色,并按照节点排序,对与前面着色点不邻接的每一个节点进行上色step:用第二种颜色重复步骤2,直到没有剩余的颜色课程编号={1, 2, 3, 4, 5, 6, 7, 8, 9}冲突...转载 2019-07-24 00:26:19 · 347 阅读 · 0 评论 -
数据结构和算法(十 三): 图的遍历,最小生成树,最短路径,拓扑路径
深度优先遍历深度优化遍历(DepthFirstSearch),也有称为深度优化搜索,简称为DFS。// 邻接表的深度有限递归算法#define TRUE 1#define FALSE 0#define MAX 256typedef int Boolean; // 这里我们定义Boolean为布尔类型,其值为TRUE或FALSEBoolean visited[MAX]; //...转载 2019-07-19 19:03:26 · 557 阅读 · 0 评论 -
数据结构和算法(十 四): 图的应用
马踏棋盘(骑士周游)题目渊源: 马踏棋盘问题(又称骑士周游或骑士漫游问题)是算法设计的经典问题之一。题目要求: 国际象棋的棋盘为8*8的方格棋盘,现将“马”放在任意指定的方格中,按照“马”走棋的规则将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘64个方格。 编写代码,实现马踏棋盘的操作,要求用1~64来标注“马”移动的路径。#include <stdio.h...转载 2019-07-19 19:03:48 · 222 阅读 · 0 评论 -
数据结构和算法(十 五): 查找(顺序表 有序表 二叉排序 AVL )
静态查找和动态查找查找结构顺序查找顺序查找又叫线性查找,是最基本的查找技术,它的查找过程是:从第一个(或者最后一个)记录开始,逐个进行记录的关键字和给定值进行比较,若某个记录的关键字和给定值相等,则查找成功。如果查找了所有的记录仍然找不到与给定值相等的关键字,则查找不成功。/**************************************** 数据结构和算法-...转载 2019-07-20 19:28:34 · 263 阅读 · 0 评论 -
数据结构和算法(十 六): 查找(B,散列表)
多路查找树(multi-way search tree)//实现对order序(阶)的B-TREE结构基本操作的封装。 //查找:search,插入:insert,删除:remove。 //创建:create,销毁:destory,打印:print。 #ifndef BTREE_H #define BTREE_H #ifdef __cplusplus e...转载 2019-07-20 20:42:47 · 140 阅读 · 0 评论 -
数据结构和算法(十 七): 排序
冒泡排序:#include <stdio.h>void BubbleSort1(int k[] , int n){ int i , j , temp ,count1 = 0 , count2 = 0,num ; for(i = 0 ; i < n-1 ; i++) { for(j = i+1 ; j <...转载 2019-07-20 23:52:47 · 133 阅读 · 0 评论 -
自己练习的数据结构和算法
1.顺序表#ifndef DAHUASHUJUJIEGOU_H_#define DAHUASHUJUJIEGOU_H_#include <stdio.h>#define MAXSIZE 20typedef int ElemType;typedef struct sqlist{ ElemType data[MAXSIZE]; //顺序表中的元素 ...转载 2019-07-23 16:56:20 · 211 阅读 · 0 评论 -
数据结构和算法(十 二): 图
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。图的顶点与边之间的关系图的存储结构// 时间复杂度为O(n+n^2+e)#define MAXVEX 100 // 最大顶点数#define INFINITY 65535 // 用65535来代表无穷大...转载 2019-07-16 00:23:28 · 219 阅读 · 0 评论 -
数据结构和算法(五):(顺序存储)栈
栈 stack 后进先出 Last In First Out LIFO 只在表尾进行操作 栈的元素必须 “后进先出”。 栈的操作只能在这个线性表的表尾进行。 注:对于栈来说,这个表尾称为栈的栈顶(top),相应的表头称为栈底(bottom)...转载 2019-04-16 23:05:28 · 234 阅读 · 0 评论 -
数据结构和算法(一)数据结构和算法概述
1.1 数据结构+算法= 程序 //大话数据结构的第一章1.2 算法复杂度//大话数据结构的第二章 和 趣学算法的第一章 自己看书,乱趣学算法:1.3递归 魔鬼序列:故事1:一棋盘的麦子 故事2 :神奇兔子 故事3:马克思手稿中的数学 故事4:爱因斯坦的阶梯 故事5 :哥德巴赫猜想 1.1 数据结构+算...转载 2019-04-14 17:47:59 · 460 阅读 · 0 评论 -
数据结构和算法(二)线性表:顺序存储、单链表
线性表1.3 线性表的顺序存储1.4单链表 线性表就是存储位置时连续的,看下图。 1.1基本的操作 InitList(*L) 初始化操作,建立一个空的线性表L。 ListEmpty(L)判断线性表是否为空表,若线性表为空,返回true,否则返回false。 ClearList(*L) 将线性表清空。...转载 2019-05-15 22:01:22 · 406 阅读 · 0 评论 -
数据结构和算法(三)线性表:静态链表、循环链表、双向链表
线性表1.1静态链表1.2循环链表1.3双向链表 double linkedlist1.1静态链表 静态链表就是使用静态的数组来描述单链表。意思就是:用游标代替指针。#include <stdio.h>//定义静态链表 (即 游标实现法)#define ElemType int #define MAXSIZE 1000t...转载 2019-05-15 22:15:17 · 201 阅读 · 0 评论 -
数据结构和算法(四):链表的应用
链表的应用1.1快速找到未知长度单链表的中间节点1.2合并两个链表 L1.3判断单链表中是否有环1.4将线性表B中的元素,放在A中,且A中没有这种元素1.5约瑟夫问题1.6二进制到八进制1.7魔术师发牌问题1.8拉丁方阵问题(参考1.7)1.9Vigenere(维吉尼亚)加密(参考2.0)2.0双向循环链表实战1.1快速找到未知长度单链表的中间节点普...转载 2019-05-15 22:27:29 · 340 阅读 · 0 评论 -
数据结构代码小总:链表 栈 队列 树
LinkList.h#pragma once#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0typedef int ElemType;//假定线性表的元素类型为整型//定义节点typedef struct node { int data; struct node...转载 2019-07-23 21:09:58 · 326 阅读 · 0 评论 -
数据结构和算法(六):栈的链式存储
栈的链式存储栈的链式存储结构 :栈因为只是栈顶来做插入和删除操作,所以比较好的方法就是将栈顶放在单链表的头部,栈顶指针和单链表的头指针合二为一这样就是通过链表的头插法来插入和删除数据。/**************************...转载 2019-07-10 17:12:31 · 234 阅读 · 0 评论 -
数据结构和算法(十): 树 的基础知识
树的定义结点分类结点间的关系结点的层次树的存储结构1.双亲表示法// 树的双亲表示法结点结构定义#define MAX_TREE_SIZE 100typedef int ElemType;typedef struct PTNode{ ElemType data; // 结点数据 int parent; // 双亲位置}PT...转载 2019-07-13 16:04:34 · 126 阅读 · 0 评论 -
数据结构和算法(十 一): 二叉树、线索二叉树、线索二叉树、赫夫曼树
二叉树的定义二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点1.每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。(注意:不是都需要两棵子树,而是最多可以是两棵,没有子树或者有一棵子树也都是可以的。)2.左子树和右子树是有顺...转载 2019-07-15 23:04:53 · 235 阅读 · 0 评论 -
数据结构和算法(七):栈的应用:递归、RPN、进制转换、分治思想
递归分治思想:折半查找算法的递归实现汉诺塔问题八皇后逆波兰(Reverse Polish Notation, RPN)表示中缀表达式转后缀表达式二进制转为十进制递归1.斐波那契数列的实现递归的思想:/**************************************** 数据结构和算法--小甲鱼* 递归print*******...转载 2019-07-12 14:24:05 · 375 阅读 · 0 评论 -
数据结构和算法(八):队列
队列队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列:先进先出队列的抽象数据类型InitQueue(*Q): 初始化操作,建立一个空队列Q。 DestroyQueue(*Q): 若队列Q存在,则销毁它。...转载 2019-07-12 16:16:52 · 187 阅读 · 0 评论 -
数据结构和算法(九): 串
串串(string)是由零个或多个字符组成的有限序列,又名叫字符串。零个字符的串称为空串(nullstring),它的长度为零,可以直接用两双引号“" "”表示,也可以用希腊字母“Φ”来表示。子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,相应地...转载 2019-07-13 11:16:05 · 109 阅读 · 0 评论