数据结构与算法
huwei_
这个作者很懒,什么都没留下…
展开
-
哥德巴赫猜想
哥德巴赫猜想:任意一个大于6的偶数都可以写成两个素数的和:using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Thre原创 2016-06-26 22:45:58 · 293 阅读 · 0 评论 -
C# 实现最短二叉树路径
条件:一颗普通的二叉树,给定二叉树的两个节点,nodeA、nodeB输出:找到nodeA和nodeB的最短路径,并输出:如的d节点到h节点的最短路径为红线所示:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading原创 2016-09-28 23:58:39 · 976 阅读 · 0 评论 -
常规压缩算法题
条件:一个文本,需要对文本本进行简单压缩。规则1:压缩重复字符,如 abbbabbb 压缩为 abab规则2:压缩重复的简单序列,如 ababab 压缩为 ab (只针对 两个字符的重复序列,不考虑过多字符的重复序列)注:规则1和规则2,没有先后顺序关系,只能叠加次,不会循环、反复叠加window.onload = function () {原创 2016-09-29 00:06:29 · 536 阅读 · 0 评论 -
点、矢量及其运算
点点是n维空间中(游戏中指二维或者三维)的一个位置。点没有大小,方向。它仅仅表示一个位置。点的表示,通常使用一组数字来表示一个点P,二维和三维空间的点表示如下:Point1(x1,y1),Point 1(x1,y1,z1)矢量矢量 — 也被称为向量(vector)。矢量指的是n维空间中一条包含了模(大小)和方向的有向线段。矢量是一个有向线段,包含了模和方向,它没有位置的概念,只要矢量的模和方向不变...原创 2018-03-15 21:03:38 · 2512 阅读 · 0 评论 -
算法基本概念,时间复杂度,空间复杂度
1、总览算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表示一个或多个操作。 (多个指令序列--->一个或多个操作) 算法的基本特性:输入输出、有穷性、确定性、可行性、 算法的设计要求:正确性、可读性、健壮性、时间效率高和存储量低2、算法效率的度量方法:算法时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问...原创 2018-07-23 10:22:21 · 328 阅读 · 0 评论 -
数据结构基本概念、顺序存储结构、链式存储结构
1、基本概念数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。包含有整型、实型等数值类型;字符类型(声音、图像、视频等都可以通过编码手段变成字符类型) 数据元素(人):组成数据的、有一定意义的基本单位; 数据项(眼耳鼻姓名地址等):一个数据元素可以由若干个数据项组成。 数据结构:是相互之间存在一种或多种特定关系的数...原创 2018-07-23 10:36:46 · 1918 阅读 · 0 评论 -
线性表的顺序存储结构与链式存储结构
1、线性表的概况线性表的定义:零个或多个数据元素的有限序列2、顺序存储结构:三个重要属性: 存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置 线性表的最大存储容量:数组data的长度MAXSIZE(这里是20) 线性表的当前长度:length顺序存储结构的插入删除时间复杂度: 最好情况:插入/删除最后...原创 2018-07-23 10:41:08 · 6958 阅读 · 1 评论 -
数据结构之 栈与队列,栈的递归,栈的四则运算
1、总览2、栈定义:栈是限定仅在表尾进行插入和删除操作的线性表。(浏览器后退、word等撤销)栈的顺序存储结构:俩个栈的共享空间: 特点:数组的俩端向中间靠拢。(类比股票,有人卖出才能有人买入)。栈的链式存储结构:链栈。栈的应用:(1)递归算法: 栈实现了递归。 把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称做递归函...原创 2018-07-23 10:43:42 · 1154 阅读 · 0 评论 -
数据结构之串
1、定义: 串是由零个或多个字符组成的有序序列,又名叫字符串。串的比较: 串的顺序存储类型 用一组连续的存储单元来存储串的有序序列。链式存储类型 一个节点可以存放多个字符,也可以存放一个字符,最后一个节点若未被占满时,可以用“#”补全。(不如顺序存储灵活,性能也不好) 2、串的模式匹配方法:(1)朴素的模式...原创 2018-07-23 10:47:36 · 215 阅读 · 0 评论 -
数据结构之树(一)树的定义、树的基本属性特征
1、定义: 树:树是n(n≥0)个节点的有限集。n=0时称为空树。在任意一颗非空树种:(1)有且仅有一个特定的称为根的节点(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1、T2、....、Tm,其中每一个集合本身又是一颗树,并称为根的子树。 2、树的一些属性特征: 树的度: 结点拥有的子树个数,称为结点的度。度为0的称...原创 2018-07-23 10:56:34 · 5929 阅读 · 0 评论 -
数据结构之树(三)树的前序遍历,终须遍历,后序遍历
1、前序遍历 规则是,若二叉树为空,则空操作反馈,否则,先访问根结点,然后前序遍历左子树,再前序遍历右子树。 算法结构代码: 2、中序遍历 规则是,若二叉树为空,则空操作反馈,否则,先从根结点开始(这里并不是访问),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树, 算法结构代码:3、后序遍历 ...原创 2018-07-23 11:16:54 · 1289 阅读 · 0 评论 -
插入排序
插入排序using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication1{ class Program { stati原创 2016-07-05 00:14:23 · 252 阅读 · 0 评论 -
选择排序
选择排序的实现:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication1{ class Program { s原创 2016-07-05 00:11:54 · 268 阅读 · 0 评论 -
栈
备注:程序引用了前面双链表类using System;using System.Collections.Generic;using System.Linq;using System.Text;using UnilateralismChainTable;namespace StackApply{ public class CStack { //调用链原创 2016-07-04 23:59:36 · 320 阅读 · 0 评论 -
百钱买百鸡
using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program {原创 2016-06-26 16:12:59 · 521 阅读 · 0 评论 -
冒泡排序
1、算法描述:将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。2、算法原理:冒泡排序算法的运作如下:(从后往前)1. 比较相邻原创 2016-06-29 01:07:47 · 409 阅读 · 0 评论 -
约瑟夫环
约瑟夫环: 已知n个人(以编号1,2,3,4....n分别表示)围坐在一张圆桌周围。从编号为k开始报数,数到m的那个人出列;他的下一个人又从一开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列。using System;using System.Collections.Generic;using System.Linq;using System.Text;原创 2016-06-29 01:13:06 · 408 阅读 · 0 评论 -
二分查找
1、二分查找优缺点: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。2、二分查找原理: 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间原创 2016-06-29 01:22:40 · 294 阅读 · 0 评论 -
快速排序
1、算法描述快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2、算法原理设要排序的数组是A[0原创 2016-06-29 01:36:34 · 202 阅读 · 0 评论 -
斐波那契数列
1、斐波那契数列介绍 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F原创 2016-06-29 01:55:47 · 341 阅读 · 0 评论 -
韩信点兵
韩信点兵: 韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信马上说出人数:1049。代码实现:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleA原创 2016-06-29 02:02:55 · 4063 阅读 · 1 评论 -
水仙花数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)代码实现:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{原创 2016-06-29 02:05:33 · 470 阅读 · 0 评论 -
双向链表
双向链表定义: public class ListNode { public ListNode(int NewValue) { Value = NewValue; } //前一个 public ListNode原创 2016-07-04 23:52:09 · 277 阅读 · 0 评论 -
队列
备注:程序引用了前面双链表类using System;using System.Collections.Generic;using System.Linq;using System.Text;using UnilateralismChainTable;namespace Alignment{ /// /// 队列类 /// public cl原创 2016-07-05 00:06:38 · 258 阅读 · 0 评论 -
数据结构之树(二)二叉树、赫夫曼树的定义与特点
1、二叉树的定义 二叉树是n(n≥0)个节点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和俩颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。2、二叉树的特点:(1)每个结点最多俩颗子树,所以二叉树中不存在度大于2的结点。没有子树或者有一颗子树都是可以的。(2)左子树和右子树是有顺序的,次序不能任意颠倒。(人的的左右手)(3)即使树中某节点只有一颗...原创 2018-07-23 14:47:08 · 911 阅读 · 0 评论