c++基础8:常用的数据结构及算法
来源:互联网 发布:wis水润面膜知乎 编辑:程序博客网 时间:2024/05/18 01:32
一.常用数据结构
数组 (Array)
在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。栈 (Stack)
是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。队列 (Queue)
一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。链表 (Linked List)
是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。树 (Tree)
是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件: (1)有且仅有一个结点 K0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)。 (2)除K0外,K中的每个结点,对于关系N来说有且仅有一个前驱。 (3)K中各结点,对关系N来说可以有m个后继(m>=0)。图 (Graph)
图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。堆 (Heap)
在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。散列表 (Hash)
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
二.数据结构的排序算法
稳定的排序算法
冒泡排序(bubble sort) 鸡尾酒排序 (Cocktail sort, 双向的冒泡排序) 插入排序 (insertion sort) 桶排序 (bucket sort) 计数排序 (counting sort) 合并排序 (merge sort) 原地合并排序 二叉排序树排序 (Binary tree sort) 鸽巢排序 (Pigeonhole sort) 基数排序 (radix sort) Gnome 排序 图书馆排序不稳定排序算法
选择排序 (selection sort) 希尔排序 (shell sort) 组合排序 堆排序 (heapsort) 平滑排序 快速排序 (quicksort) 内省排序 (Introsort) Patience sorting不实用的排序算法
Bogo排序 Stupid sort 珠排序(Bead sort) Pancake sorting- c++基础8:常用的数据结构及算法
- 常用数据结构及算法
- 高精度算法数据结构及常用函数实现(C++)
- linux常用c函数 数据结构及算法篇
- 数据结构及算法 3-先打下一点数据结构的基础
- 数据结构基础篇(3)--算法时间复杂度的常用算法
- 常用数据结构和算法基础
- 常用查找数据结构及算法
- 常用的数据结构算法
- 算法与数据结构基础2:C++String类的实现
- 字符串基础及常用算法
- C数据结构--二叉树的概念及基本算法
- 简单数据结构总结及常用排序算法
- 计算机基础算法及数据结构综述
- c/c++常用算法(3) -- 数据结构(栈)
- c/c++常用算法(4) -- 数据结构(队列)
- c/c++常用算法(5) -- 数据结构(树)
- c/c++常用算法(6) -- 数据结构(图)
- POJ1528 数论
- DownloadManager
- android手机操作数据库出现sqlite3 not found的解决方法
- android 根据IP获取天气情况 详细讲解
- java 读取xml
- c++基础8:常用的数据结构及算法
- Memcached的管理
- 2012年总结
- CreateFileMapping 、MapViewOfFile、UnmapViewOfFile函数用法及示例
- nafxcwd.lib与libcmtd.lib冲突解决办法
- I2S音频总线学习(一)数字音频技术
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- /var/run/gdm.pid doesn't exist, perhaps GDM isn't running
- c写的 ffplay 遇到的问题记录