数据结构与算法简述

  • 一、线性表
  • 二、栈(Stack)和队列(Queue)
  • 三、数组
  • 四、排序

一、线性表

定义:一个线性表是n个具有相同特性的数据元素的有限序列,除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(大部分是这样子)。线性表的实现有4种,顺序表、单链表、双向链表和循环链表。

线性表的接口定义:

     interface IListDS<T>{int GetLength();//求长度void Clear();//清空操作bool isEmpty();//判断线性表是否为空void Add(T item);//附加操作void Insert(T item,int i);//插入操作T Delete(int i);//删除操作T GetElem(int i);//取表元T this[int index]{get;}//定义一个索引器 获取元素int Locate(T value);//按值查找}

顺序表和单链表:顺序表是地址连续的存储单元,相邻数据元素在物理位置上也相邻。顺序表在插入删除操作时,需要移动元素,影响了运行效率,单链表的链式存储则不需要移动。相对来说,单链表取值会比较慢。单链表的结点 由两部分组成,一部分data,表示结点的数据域,一部分为next,叫作引用域。

双向链表:在结点中需要设两个引用域,一个保存直接前驱结点的地址,叫prev,一个直接后继结点的地址,叫next,这样子的链表就是双向链表。相对于单链表更为方便。

循环链表:尾部结点指向头结点。

二、栈(Stack)和队列(Queue)

定义:线性表的操作不受限制,而栈和队列的操作受到限制。栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其他操作在表的另外一端进行。栈和队列也被称为受限的线性表。

栈的重要方法如下:
1.Push()入栈 添加数据
2.Pop()出栈 删除数据,返回被删除的数据
3.Peek()取得栈顶的数据,不删除
4.Clear()清空所有数据
5.Count栈中个数
顺序栈用数组实现;链栈用链表实现,需要结点。插入新元素时,让新元素指向原来的栈顶,让头结点指向这个新的元素。

队列的重要方法如下:
1.Enqueue()入队 放在队尾
2.Dequeue()出队 移除对首元素,并返回被移除的元素
3.Peek()获取队首的元素,不移除
4.Clear()清空元素
5.Count获取队列容量大小
顺序队列具有假溢出,即循环顺序队列,当队尾元素满了,会返回队头前面,若为空依旧可以入队,这种情况称为假溢出。
链队列操作只是在一端进行,为了方便操作,把队头设在链表的头部,并且不需要头结点。

三、数组

如果是引用类型,先引用数组,再引用到别的数据。如果是值类型的话,数组里面存储的就是它的值。
数组中的 indexOf 方法及使用:
indexof() :在字符串中从前向后定位字符和字符串;所有的返回值都是指在字符串的绝对位置,如为空则为- 1
lastindexof() :在字符串中从后向前定位字符和字符串;用法和 indexof() 完全相同。

 string test="asdfjsdfjgkfasdsfsgfhgjgfjgdddd";test.indexof('d') =2 //从前向后 定位 d 第一次出现的位置test.indexof('d',1) =2 //从前向后 定位 d 从第三个字符串 第一次出现的位置test.indexof('d',5,2) =6 //从前向后 定位 d 从第5 位开始查,查2位,即 从第5位到第7位;

一维数组中常用方法:

object Clone()//创建并返回此对象的副本
object GetValue(int index)//获取指定位置的值
void Reverse(Array array)//反转整个一维Array中元素的顺序
void SetValue(object value,int index)//设置一个指定位置的元素
void CopyTo(Array array,int index)//将一维Array的所有元素复制到指定的一维Array中
void Copy(Array sourceArray,Array destinationArray,int length);//从第一个元素开始复制到Array中的一系列元素到另一个Array中

四、排序

冒泡排序:从第一个开始,相邻两个元素之间两两进行比较,较大的向后移动,几趟下来就会得到一个从小到大的数组。
快速排序:将第一个数作为基数,从后开始向前遍历,遇到比基数小的,进行交换,然后被交换的这个数作为新的基数,开始从前向后遍历,遇到比他大的就交换,然后被交换的数作为新的基数,又开始从后向前遍历,几轮下来会得到一组左边的数都小于这个基数,右边的数都大于这个基数,然后将左右两部分通过递归的方法,最后会得到一组从小到大排序好的数组。
直接插入排序:从第一个数组开始插入到一个新的有序数据,从后向前遍历,遇到没有比这个要插入的数大的时候,就插入这个位置,后面的数向后移动一位,几轮下来,一个无序的数组就完全插入到一个有序的数组中来了,即得到一个从小到大的有序数组。
选择排序:从待排序的数组中,选择最小的数与第一个数的位置进行交换,然后第二轮开始,从待排序的第一个数开始遍历,选择最小的数与待排序的第一个数进行交换,几趟下来会得到一个从小到大排序的数组。

Unity 3D 面试 数据结构与算法简述相关推荐

  1. 【万字总结】数据结构与算法简述和CS综合,保姆级一文打包

    数据结构与算法简述和CS综述整理.本文非基础的教程,本文会列出大量学习和参考网站.老惯例,一个文章是一个集大成(本文借助了语音输入(PC 版 讯飞输入法)由此加速码字,但仍保持简洁的文风). 数据结构 ...

  2. JavaScript数据结构和算法简述——数组

    为什么先讲数组 数据结构可以简单的被分为线性结构和非线性结构. 线性结构大致包括: 数组(连续存储): 链表(离散存储): 栈(线性结构常见应用,由链表或数组增删和改进功能实现): 队列(线性结构常见 ...

  3. JavaScript数据结构和算法简述——前言

    为什么要使用数据结构和算法(程序=数据结构+算法)         数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排.包括数组.链表.栈.二叉树.哈希表等.        算法是对这些结构中 ...

  4. java有趣的技术分享ppt,java面试数据结构与算法高频考

    前言 本文涵盖了阿里巴巴.腾讯.字节跳动.京东.华为等大厂的Java面试真题,不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行业的发展方向标杆,很多公司的面试官同 ...

  5. ios面试数据结构与算法

    1.不用中间变量,变换A和B的值 // 1.中间变量 void swap(int a, int b) {int temp = a;a = b;b = temp; }// 2.加法 void swap( ...

  6. 前端面试 --数据结构与算法篇

    一. 各种数据结构汇总 (内容深度只涉及到前端水平,毕竟我水平也一般) 1. 线性表  数据元素间是线性关系,数据元素在表中的位置只取决于 其序号  存在唯一的一个被称作"第一个&quo ...

  7. Unity 3D之简单鱼群算法(直接套上就好)

    鱼群算法在捕鱼达人类似的游戏中是不可或缺的,还有很多项目中都要用到,我本人觉得这条算法帮助我做过诸多的项目,其中有AR,VR,捕鱼达人秀等,简单粗暴,如果有需要改正的地方还请大佬们指正: public ...

  8. 数据结构与算法题整理

    未经各位前辈允许,擅自整理,还望谅解.感激不尽. ↓↓↓↓一一一2016.9.23 如何计算时间复杂度 平均查找长度详解 ↓↓↓↓一一一2016.9.15 找工作知识储备(3)---从头说12种排序算 ...

  9. 简述3D点云配准算法

    ​ 蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点 ...

最新文章

  1. oracle 10g SYSAUX表空间快速增长之WRH$_SQL_PLAN篇
  2. 转贴:cg(c for graphic)编程语言
  3. [导入]我翻译的JavaScript文章
  4. matlab GUI gca gco gcf
  5. 【iOS数据持久化】偏好设置(UserDefaults)
  6. MySQL导出表结构相关字段以及把字段由下划线转驼峰命名
  7. 【MFC】1.Windows程序内部运行原理
  8. GDCM:gdcm::Scanner的测试程序
  9. android EventBus的简单使用
  10. 深度学习之基于DCGAN实现动漫人物的生成
  11. 比利时女摄影师玛瑞亚
  12. 如何将word表结构转换为excel表格,最终转换为PowerDesigner格式
  13. Storm概念学习系列之Task任务
  14. Ajax请求步骤(十)
  15. How to create swiping gesture list items for Windows Phone 7
  16. uni-app - 改变 <switch> 组件大小(开关太大)
  17. 2014十佳IDC评选-专访联动天下CEO饶华明
  18. matlab的clear函数,[转载]matlab学习笔记(一)之clear,clc,close劝函数
  19. 基于https搭建habor私有库
  20. 香侬专栏 | 独家对话斯坦福大学计算机系教授Percy Liang

热门文章

  1. 小波包分解matlab程序
  2. 北理工大学计算机专硕学硕,计算机2年制专硕越来越少,生活终于对我下手了吗?...
  3. 什么叫做POJO类?
  4. 解决iOS下拉回弹方法二
  5. c语言16进制怎么计算器,问各位大侠一个16进制计算器的问题(Charles Petzold著《windows程序设计》第11章)...
  6. #FF00FF(255,0,255)应该是紫色(Purple),把#FF00FF称为“品红”(“洋红/Magenta”)是一种误称
  7. android 自定义关机界面,怎么定制Android关机界面
  8. c语言开发exporter,cadvisor node-exporter引发的容器文件系统泄漏
  9. BP 供应商创建与修改
  10. 爱马仕橙JOYEAS休闲沙发