|
| 1 | +{ |
| 2 | + "cells": [ |
| 3 | + { |
| 4 | + "cell_type": "markdown", |
| 5 | + "metadata": {}, |
| 6 | + "source": [ |
| 7 | + "# 数据结构概述 \n", |
| 8 | + "\n", |
| 9 | + "https://www.tutorialspoint.com/python/python_data_structure_introduction.htm\n", |
| 10 | + "\n", |
| 11 | + "数据结构是计算机科学的基本概念,有助于编写任何语言的高效程序。 Python是一种高级,解释,交互式和面向对象的脚本语言,与其他编程语言相比,我们可以用更简单的方式研究数据结构的基础知识。 在本章中,我们将研究一般常用数据结构的简短概述,以及它们与某些特定python数据类型的关系。还有一些特定于python的数据结构被列为另一个类别。 \n", |
| 12 | + "\n", |
| 13 | + "一般数据结构 计算机科学中的各种数据结构大致分为以下两类。我们将在后续章节中详细讨论下面的每个数据结构。 \n", |
| 14 | + "\n", |
| 15 | + "## 1.线性数据结构\n", |
| 16 | + "\n", |
| 17 | + "这些是以顺序方式存储数据元素的数据结构。 \n", |
| 18 | + "\n", |
| 19 | + "### 数组Array\n", |
| 20 | + "\n", |
| 21 | + "它是与数据元素的索引配对的数据元素的顺序排列。\n", |
| 22 | + "\n", |
| 23 | + "### 链表Linked List\n", |
| 24 | + "\n", |
| 25 | + "每个数据元素都包含指向另一个元素的链接以及其中的数据。 \n", |
| 26 | + "\n", |
| 27 | + "### 栈Stack\n", |
| 28 | + "\n", |
| 29 | + "它是一种数据结构,仅遵循特定的操作顺序。 LIFO(last in First Out,后进先出)或者FILO(First in Last Out先进先出)。 \n", |
| 30 | + "\n", |
| 31 | + "### 队列Queue\n", |
| 32 | + "\n", |
| 33 | + "它与Stack类似,但操作顺序仅为FIFO(First In First Out,先进先出)。 \n", |
| 34 | + "\n", |
| 35 | + "### 矩阵Matrix\n", |
| 36 | + "\n", |
| 37 | + "二维数据结构,其中数据元素由一对索引引用。 \n", |
| 38 | + "\n", |
| 39 | + "## 2.非线性数据结构\n", |
| 40 | + "\n", |
| 41 | + "这些数据结构中没有数据元素的顺序链接。任何一对或一组数据元素都可以相互链接,并且可以在没有严格序列的情况下访问。\n", |
| 42 | + "\n", |
| 43 | + "### 二叉树Binary Tree\n", |
| 44 | + "\n", |
| 45 | + "这是一种数据结构,其中每个数据元素可以连接到最多两个其他数据元素,并以根节点开始。 \n", |
| 46 | + "\n", |
| 47 | + "### 堆Heap\n", |
| 48 | + "\n", |
| 49 | + "这是树数据结构的一种特殊情况,其中父节点中的数据严格大于/等于子节点或严格小于其子节点。 \n", |
| 50 | + "\n", |
| 51 | + "若母节点的值恒小于等于子节点的值,此堆积称为最小堆积(min heap);反之,若母节点的值恒大于等于子节点的值,此堆积称为最大堆积(max heap)。在堆积中最顶端的那一个节点,称作根节点(root node),根节点本身没有母节点(parent node)。\n", |
| 52 | + "\n", |
| 53 | + "堆的实现通过构造二叉堆(binary heap),实为二叉树的一种;由于其应用的普遍性,当不加限定时,均指该数据结构的这种实现。这种数据结构具有以下性质。\n", |
| 54 | + "\n", |
| 55 | + "- 任意节点小于(或大于)它的所有后裔,最小元(或最大元)在堆的根上(堆序性)。\n", |
| 56 | + "- 堆总是一棵完全树。即除了最底层,其他层的节点都被元素填满,且最底层尽可能地从左到右填入。\n", |
| 57 | + "\n", |
| 58 | + "将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。\n", |
| 59 | + "\n", |
| 60 | + "### 散列表/哈希表Hash Table\n", |
| 61 | + "\n", |
| 62 | + "它是一种数据结构,由使用散列函数相互关联的数组组成。它使用键而不是数据元素的索引来检索值。 \n", |
| 63 | + "\n", |
| 64 | + "### 图Graph\n", |
| 65 | + "\n", |
| 66 | + "它是顶点和节点的排列,其中一些节点通过链接相互连接。 \n", |
| 67 | + "\n", |
| 68 | + "## 3.python特定数据结构\n", |
| 69 | + "\n", |
| 70 | + "这些数据结构特定于python语言,它们为在python环境中存储不同类型的数据和更快的处理提供了更大的灵活性。 \n", |
| 71 | + "### 列表List\n", |
| 72 | + "\n", |
| 73 | + "它类似于数组,但数据元素可以是不同的数据类型。您可以在python列表中同时包含数字和字符串数据。 \n", |
| 74 | + "\n", |
| 75 | + "### 元组Tuple\n", |
| 76 | + "\n", |
| 77 | + "元组类似于列表,但它们是不可变的,这意味着元组中的值无法修改,只能读取。 \n", |
| 78 | + "\n", |
| 79 | + "### 字典Dictionary\n", |
| 80 | + "\n", |
| 81 | + "字典包含键值对作为其数据元素。 在接下来的章节中,我们将学习如何使用Python实现每个数据结构的细节。" |
| 82 | + ] |
| 83 | + } |
| 84 | + ], |
| 85 | + "metadata": { |
| 86 | + "kernelspec": { |
| 87 | + "display_name": "Python 3 (system-wide)", |
| 88 | + "language": "python", |
| 89 | + "name": "python3" |
| 90 | + }, |
| 91 | + "language_info": { |
| 92 | + "codemirror_mode": { |
| 93 | + "name": "ipython", |
| 94 | + "version": 3 |
| 95 | + }, |
| 96 | + "file_extension": ".py", |
| 97 | + "mimetype": "text/x-python", |
| 98 | + "name": "python", |
| 99 | + "nbconvert_exporter": "python", |
| 100 | + "pygments_lexer": "ipython3", |
| 101 | + "version": "3.6.8" |
| 102 | + } |
| 103 | + }, |
| 104 | + "nbformat": 4, |
| 105 | + "nbformat_minor": 2 |
| 106 | +} |
0 commit comments