
数据结构与算法
文章平均质量分 78
ZalGGboy
这个作者很懒,什么都没留下…
展开
-
算法的时间复杂度和空间复杂度-总结
通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间复杂度分析方法是很有必要的。转载 2018-01-05 18:19:15 · 556 阅读 · 0 评论 -
时间复杂度简述
算法复杂度分为时间复杂度和空间复杂度,一个好的算法应该具体执行时间短,所需空间少的特点。 随着计算机硬件和软件的提升,一个算法的执行时间是算不太精确的。只能依据统计方法对算法进行估算。我们抛开硬件和软件的因素,算法的好坏直接影响程序的运行时间。 我们看一下小例子: int value = 0; // 执转载 2018-01-05 18:21:18 · 422 阅读 · 0 评论 -
C语言学习历程(十七)数据结构与排序(冒泡、选择、希尔排序)算法
include define MAXSIZE 10typedef struct SqList { int data[MAXSIZE+1]; /设置一个哨兵data【0】/ int length; }SqList;int swap(SqList L,int i,int j) /交换函数*/ { int t = L -> data[原创 2018-01-16 13:50:47 · 514 阅读 · 0 评论 -
C语言学习历程(十八) 数据结构二叉树的创建、遍历、深度等算法
#include “string.h” #include “stdio.h” #*include “stdlib.h”* *#include “math.h” #include “time.h” #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 100 / 存储空间初始分配量 /*原创 2018-01-16 13:57:31 · 603 阅读 · 0 评论 -
C语言学习历程(十九) 数据结构完成停车场项目
#include #include #include typedef struct Node { char num[10]; /*定义结构体内容*/ char name[20]; int vip; struct Node *next; /*结构体链表*/ }ListNode,*LinkList;原创 2018-01-28 11:03:01 · 941 阅读 · 1 评论 -
DFS和BFS详解
BFS 、DFS区别,详解 写在最前的三点: 1、所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次。 2、实现bfs和dfs都需要解决的一个问题就是如何存储图。一般有两种方法:邻接矩阵和邻接表。这里为简单起 见,均采用邻接矩阵存储,说白了也就是二维数组。 3、本文章的小测试部分的测试实例是下图: 一、深度优先搜索遍历 1、从顶点v出发深度遍历图G的算法 ① 访问v ...原创 2018-09-09 13:47:28 · 3062 阅读 · 0 评论 -
Linux下C语言实现线程池例程
什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 p...原创 2019-01-22 13:00:21 · 508 阅读 · 0 评论