随笔分类 -  数据结构与算法

很长时间没有碰这个了,多久?十年?数据结构是算法的基石,如果没有扎实的数据结构基础,想要把算法学好甚至融会贯通是非常困难的,二又有的算法又往往取决于你采用那种数据结构。常用的数据结构有:数组、字符串/链表/堆/栈/队列/双端队列/树;其中相对复杂高级的数据结构有:优先队列/图/前缀树/线段树/树状数组。
排序——基数排序技术
摘要:基数排序是一种借助于多关键码排序的思想,是将单关键码按基数分成“多关键码”进行排序的方法。它的排序思想不是通过关键码之间的比较而是通过多次的“分配”和“收集”来完成的。 1、多关键码排序 举个大家都很熟悉的扑克牌的例子:扑克牌中的52张牌,可按花色和面值分成两个属性,设其大小关系为: 花色:梅花 < 阅读全文
posted @ 2022-02-14 10:47 池塘里洗澡的鸭子 阅读(128) 评论(0) 推荐(0) 编辑
排序——归并排序技术
摘要:归并排序的思想是将几个相邻的有序表合并成一个总的有序表,下面主要讨论二路归并排序。 1、两个有序表的合并 二路归并排序的基本操作是将两个相邻的有序表合并为一个有序表。下面是将两个顺序存储的有序表合并为一个有序表的算法: 设两个有限子表R[s]……R[m]和R[m+1]……R[t],将两个有序子表合并 阅读全文
posted @ 2022-02-14 09:55 池塘里洗澡的鸭子 阅读(66) 评论(0) 推荐(0) 编辑
排序——选择排序技术
摘要:选择排序主要是每一趟从待排序列中选取一个关键码最小的记录,也即第1趟从n个记录中选取关键码最小的记录,第2趟从剩下的n-1个记录中选取关键码最小的记录知道整个序列的记录选完。这样,由选取记录的顺序便得到按关键码有序的序列。 1、简单选择排序 简单选择排序的过程为:第1趟,从n个记录中找出关键码最小的 阅读全文
posted @ 2022-02-13 19:56 池塘里洗澡的鸭子 阅读(122) 评论(0) 推荐(0) 编辑
排序——交换排序技术
摘要:交换排序的基本思想是:排序表中两个记录关键码的进行比较,若与排序要求相逆,则将二者进行交换知道没有反序的记录为止。 1、冒泡排序 设排序表为R[1]……R[n],对n个记录的排序表进行冒泡排序(Bubble Sort)的过程是:第1趟,从第1个记录开始到第n个记录,对n-1对相邻的两个记录关键码进行 阅读全文
posted @ 2022-02-12 21:01 池塘里洗澡的鸭子 阅读(75) 评论(0) 推荐(0) 编辑
排序——插入排序技术
摘要:插入排序的基本思想是:每次将一个待排序的记录,按其关键字的大小插入到它前面已经排好序的子表的适当位置;直到全部记录插入完成,整个表有序为止。 1、直接插入排序 直接插入排序是一种简单的插入排序方法,其基本思想为:在R1至Ri-1长度为i-1的子表已经有序的情况下,将Ri插入得到R1至Ri长度为i的子 阅读全文
posted @ 2022-02-11 16:33 池塘里洗澡的鸭子 阅读(112) 评论(0) 推荐(0) 编辑
查找——树结构查找技术
摘要:树结构查找就是将查找表按照某种规律建成树结构。因为构建的树结构是按某种规律建立的,所以查找过程也遵循这种规律可以获得较高的查找效率。下面介绍两种二叉树: 一、二叉排序树 1、二叉排序树的定义 二叉排序树(Binary Sort Tree)或者是一棵空树或者是具有下列性质的二叉树: 1)若左子树不空, 阅读全文
posted @ 2022-02-10 22:08 池塘里洗澡的鸭子 阅读(414) 评论(0) 推荐(0) 编辑
查找——线性表查找技术
摘要:在之前的数据结构ADT中都介绍了基于存储结构的基本运算,其中查找是数据处理中通用的常用操作——很多其他操作,比如删除、修改都是基于查找技术。 介绍线性表查找技术之前介绍几个将要用到的术语,通用与后续查找技术: 1、查找表 查找表(Search Table)是一种以结合为逻辑结构、以查找为核心的数据结 阅读全文
posted @ 2022-01-18 20:26 池塘里洗澡的鸭子 阅读(360) 评论(0) 推荐(0) 编辑
数据结构之图结构
摘要:图结构(简称为图)是一种比树结构更复杂的非线性结构(多对多关系)。在树结构中结点间具有分支层次关系,而图结构中任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。 讨论图结构的存储之前,介绍图的定义及其相关的术语: 1、图的定义:图(Graph)由一个顶点集合V和一条边(或者弧)集合E组成 阅读全文
posted @ 2022-01-14 13:21 池塘里洗澡的鸭子 阅读(865) 评论(0) 推荐(0) 编辑
数据结构之树结构
摘要:在数据结构之线性结构 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中介绍了线性结构的基本概念,可以知道线性结构很大一个特点就是一个结点至多只有一个前驱或后继结点。然而显示生活中或者数据抽象中存在一种情况就是元素至多一个前驱元素同时可有多个后续元素。这种结构称之为树结构。那树结构如何定 阅读全文
posted @ 2022-01-13 14:04 池塘里洗澡的鸭子 阅读(541) 评论(0) 推荐(0) 编辑
数据结构之线性结构
摘要:在数据结构概述 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中关于线性结构有简单却形象的介绍,数据元素之间一对一的关系: 在线性结构中,有且仅有一个元素被称为“第一个”,除第一个元素之外其他元素均有唯一一个“前驱”;有且仅有一个元素被称为“最后一个”,除最后一个元素之外其他元素均有唯 阅读全文
posted @ 2022-01-13 10:43 池塘里洗澡的鸭子 阅读(650) 评论(0) 推荐(0) 编辑
数据结构概述
摘要:数据结构与数学、计算机硬件和软件有十分密切的关系。其核心技术是分解与抽象,通过对问题的抽象舍弃数据元素的具体内容就得到逻辑结构。通过分解将处理要求划分成各种功能,再通过抽象舍弃实现细节,就得到运算的定义——将上述两个方面结合将问题变换为数据结构。 数据结构是指互相之间存在着一种或多种关系的数据元素的 阅读全文
posted @ 2022-01-12 10:20 池塘里洗澡的鸭子 阅读(548) 评论(0) 推荐(0) 编辑