数据结构1 算法的时间复杂度和空间复杂度

1、算法的概念:算法 (Algorithm),是对特定问题求解步骤的一种描述。解决一个问题往往有不止一种方法,算法也是如此。那么解决特定问题的多个算法之间如何衡量它们的优劣呢?有如下的指标:2、衡量算法的指标:(1)时间复杂度:执行这个算法需要消耗多少时间。(2)空间复杂度:这个算法需要占用多少内存空间。  同一个问题可以用不同的算法解决,而一个算法的优劣将影响到算法乃至程序的效率。算法分析的目的
阅读本文

数据结构与算法(C#实现)系列---广义树(一)tkai

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜。据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow、Twitter、Reddit、IEEE Xplore、GitHub、CareerBuilder 等,对 48 种语言进行排行。与其他排行榜不同的是,IEEE Spectrum
阅读本文

2017-7-13&7-18/数据结构与算法之PHP查找算法(哈希查找)

一、哈希查找的定义提起哈希,我第一印象就是PHP里的关联数组,它是由一组key/value的键值对组成的集合,应用了散列技术。哈希表的定义如下:哈希表(Hash table,也叫散列表),是根据关键码值(Key/value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(k
阅读本文

数据结构之二分法查找

(一)二分法查找  二分法查找其实就是折半查找,一种效率较高的查找方法,针对有序数组来查的;当数据量很大适于采用该方法;  主要思想:设查找的数组区间为array[low,high];  1、确定该区间的中间位置K  2、将查找的值T与array[K]进行比较。    1.若相等,则查找成功并返回该位置K;    2.否则确定新的查找区域,继续二分查找,区域确定如下:      (1)  arra
阅读本文

数据结构(四)--队列

数据结构(四)--队列1. 队列的定义队列 (Queue)是一种先进先出(first in first out : FIFO)的线性表。它只允许在表的一端进行插入,在另一端进行删除元素。这和我们平时战队买票很一样。最早进入队列的元素最先离开,在队列中,允许插入的一端叫做队尾(rear),允许删除的一段则称为队头(front).示意图如下:2. 队列的分类队列主要分为两类: 链式队列:链式队列即用链
阅读本文

数据结构——第一章 绪论

任何一个问题一定能分析为逻辑结构中的一种结构,但却能选择不同的存储结构,以得到不同的效率。 用计算机完成处理一个问题需要先确立数据结构,并完成代码编写。步骤应该是: 1.逻辑结构(画在纸,图形上的结构): 按事物间的关系分类:一对一(线性结构)   => 线性表 栈 队列 串一对多(非线性结构)=> 树多对多(非线性结构)=> 图 事物间没有关系:集合 (一般简化为线性结构研究) 2.存储结构(计
阅读本文

数据结构16————图的定义和基本概念

数据结构16————图的定义和基本概念 一.内容: 1.图的定义 2.各种图的相关概念 3.图的ADT 二.图的定义 1.形式化定义 图(Graph)是由顶点的有穷非空集合和顶点直接边的集合组成,通常表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中的边的集合 图中的数据元素,我们称为顶点 图不存在空集,图中不允许没有顶点 任何两个顶点之间都可能有关系,顶点之间的逻辑关系
阅读本文

数据结构第十周项目(一)——验证算法(四)

/*      *Copyright (c) 2017,烟台大学计算机与控制工程学院      *All rights reserved.      *文件名称:项目1-验证算法(4)     *作    者:李庆耀      *完成日期:2017年12月12日      *版 本 号:v1.0      * 问题:      中序线索化二叉树算法的验证    */      代码:#in
阅读本文

数据结构---图的实现

实现图的存储结构; 实现图的深度优先和广度优先遍历 /**************************************************** @Title: 数据结构实验 @Name: <实验7-1> 图的遍历 @Object: [实验目的] 实现图的存储结构; 实现图的深度优先和广度优先遍历 [实验提
阅读本文

数据结构入门学习系列-9(二叉树遍历的算法实现)

二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但其开销也比较大,而若采用非递归方法实现三种遍历,则要用栈来模拟实现(递归也是用栈实现的)。下面先简要介绍三种遍历方式的递归实现,再详细介绍三种遍历方式的非递归实现。 一、三种遍历方式的递归实现(
阅读本文

数据结构-栈(应用篇)之快速排序法-C和C++的实现

一、原理解析快速排序法:基本思路是,从第一个元素开始,把所有比它大的元素放在它后面,把所有比它小的元素放前面。然后对它前面和后面的所有元素再做快速排序,直到无法再划分为止。在以下程序案例中我们使用非递归的方式,并借助栈的数据结构实现。(关于栈的基本介绍,请看上一篇:)二、程序解析C语言版本:源码:bool bAirob_QuickSort_int16(int16_t *src,int len) /
阅读本文

数据结构-栈 C和C++的实现

在数据结构中,栈是一种桶状结构,每次往桶里放数据,最后放的数据最先被拿出来,最先放进去的数据最后才能出来(FILO)C语言:一、文件清单:MyStack.h: #ifndef _MYSTACK_H #define _MYSTACK_H #include <stdio.h> #include <stdlib.h> typedef unsigned char bool; #define true 1;
阅读本文

spring多数据源的处理 mybatis实现跨库查询 实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样

实现Myibatis动态sql跨数据库的处理  Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性。而这样的方案就会不 同于常见的单一数据实例的方案,这就要程序在运行时根据当时的请求及系统状态来动态的决定将数据存储在哪个数据库实例中,以及从哪个数据库提取数据。    Spring配置多数据源的方式和具体使用过程。
阅读本文

【数据结构】C语言判断链表是否为空,计算链表长度及链表排序算法

今天继续学习了链表,这次是检测链表是否为空,计算链表长度,这都是蛮简单的,最后就是给链表排序,这里的链表排序是当然是最简单的冒泡排序。还是希望和新手一起学习,希望得到大牛指点······      这次代码还是基于上次 这个文章中的代码,直接在这上面写的,添加的,检测是否为空函数,计算链表长度函数,和链表排序函数,好了,上代码了。/*            链表创建,遍历,检测是否为空
阅读本文

数据结构学习之基本概念

一、数据结构的概念早期人们都把计算急理解为数值计算的工具。可现实中,我们更多的不是解决数值计算的问题,而是需要一些更为科学有效的手段(比如表、树和图等数据结构)的帮助,才能够更好的处理问题。所以数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。二、基本概念和术语说到数据结构得先知道什么是数据。1、数据数据是描述客观事物的符号,是计算机中可以操作的对象
阅读本文

数据结构与算法--从平衡二叉树(AVL)到红黑树

数据结构与算法--从平衡二叉树(AVL)到红黑树上节学习了二叉查找树。算法的性能取决于树的形状,而树的形状取决于插入键的顺序。在最好的情况下,n个结点的树是完全平衡的,如下图“最好情况”所示,此时树的高度为⌊log2 n⌋ + 1,所以时间复杂度为O(lg n)当我们将键以升序或者降序插入的时候,得到的是一棵斜树,如下图中的“最坏情况”,树的高度为n,时间复杂度也变成了O(n)在最坏情况下,二叉查
阅读本文

数据结构总结——线段树

此博客仅为总结,不适合新手线段树线段树(segment tree)是一种维护区间信息的数据结构, 如下图 其特点在于运用了二分的思想,将一段长度为n的区间分开为logn层,然后我们每次查询区间时最多会访问logn个区间下面代码风格可能由于历史悠久导致不同,所以最好不要学习我的代码,完整的线段树题目可以看我的csdn博客,当时我搞这个线段树还是很恼火的 初级应用——序列操作例一给你N个数,有两种操作
阅读本文

数据结构学习笔记(找工作这他妈难!)

这两天还没有接到一个面试,感觉一点希望都没有。做笔试时感觉自己数据结构很差,什么都不太懂,回来看有个知乎涛吴,讲的关于数据结构,Java,c++的形象比喻,让我豁然开朗。也让我有了进一步学习的动力  --这是引用别人的,知乎涛吴    如果说 Java 是自动档轿车,C 就是手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂
阅读本文

数据库的对象、数据类型、创建表

常见的数据库数据类型# 以Oracle数据库为例 1.字符串 char,定长,例如char(12),存储内容最大长度是12个字节,若实际存储内容只有6个字节,该列仍然占用12个字节。 varchar2是可变长,例如varchar2(12),存储内容最大长度是12个字节,若实际存储内容只有6个字节,该列仍然占用6个字节。 2.数字型number ,可以表示整数,也可以表示小数。例如number
阅读本文