
数据结构与算法
当格子衫爱上Helloworld
没有签名就是最好的签名!
展开
-
快速排序(挖坑法和前后指针法)--排序算法(四)
快速排序思想快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序流程如下:从数列中挑出一个基准值。将所有比基准值小的摆放在基准前面,所有比基准值大的摆在...原创 2019-02-21 20:06:33 · 1237 阅读 · 3 评论 -
循环链表的实现-线性表(三)
循环链表无论是静态链表还是动态链表,有时在解决具体问题时,需要我们对其结构进行稍微地调整。比如,可以把链表的两头连接,使其成为了一个环状链表,通常称为循环链表,例如:需要注意的是,虽然循环链表成环状,但本质上还是链表,因此在循环链表中,依然能够找到头指针和首元节点等。循环链表和普通链表相比,唯一的不同就是循环链表首尾相连,其他都完全一样循环链表的实现循环链表和链表唯一的不同时是:链表...原创 2019-03-31 12:50:52 · 477 阅读 · 0 评论 -
静态链表的实现--线性表(三)
静态链表静态链表可以融合顺序表和链表各自的优点,从而既能快速访问元素,又能快速增加或删除数据元素。静态链表,也是线性存储结构的一种,它兼顾了顺序表和链表的优点于一身,可以看做是顺序表和链表的升级版。使用静态链表存储数据,数据全部存储在数组中(和顺序表一样),但存储位置是随机的,数据之间"一对一"的逻辑关系通过一个整形变量(称为"游标",和指针功能类似)维持(和链表类似)。静态链表的结构节点...原创 2019-03-20 21:38:11 · 1000 阅读 · 0 评论 -
链表的实现--线性表(二)
链表(链式存储结构)链表,别名链式存储结构或单链表,用于存储逻辑关系为 “一对一” 的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。例如,使用链表存储 {1,2,3,4,5},数据的物理存储状态和顺序表对比如图所示:但是我们看到,图中根本无法体现出各数据之间的逻辑关系。因为他们师零星存储的,针对这个,链表的解决方案是,每个数据元...原创 2019-03-16 16:39:10 · 400 阅读 · 0 评论 -
顺序表的实现--线性表(一)
顺序表(顺序存储的结构)什么是顺序表顺序表,全名顺序存储结构,是线性表的一种。线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。此外,线性表是逻辑,顺序表是这种逻辑结构在内存上的实现,顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。例如,使用顺序表存储集合 {1,2,3,4,5},数据最终的存储状态为:1...原创 2019-03-14 10:28:00 · 893 阅读 · 0 评论 -
选择排序--排序算法(三)
选择排序排序思想选择排序(Selection sort)是一种简单直观的排序算法。其基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序示例以数列{20,40,30,10,60,50}为例,演示其选择排序过程(如下图)。排...原创 2019-02-21 10:38:27 · 255 阅读 · 0 评论 -
直接插入排序--排序算法(二)
直接插入排序思想直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素。排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。直接插入排序就像打牌抓牌一样,手中的牌都是有序的,当从下面拿起一张牌的时...原创 2019-02-21 10:07:49 · 325 阅读 · 0 评论 -
冒泡排序--排序算法(一)
冒泡排序思想冒泡排序一种简单的排序算法。从左向右遍历数组,两两比较,若前者大于后者,则交换两者的值,这样第一轮遍历完成(按数组索引0到n-1)最大的数在数组的末尾。从左到右再次遍历数组(0到n-2)可以得到第二大的数。依次遍历,直到数组遍历完成。冒泡排序图解下面以数列{20,40,30,10,60,50}为例,演示它的冒泡排序过程(如下图)。我们首先分析第一趟排序:当i=...原创 2019-02-20 22:00:20 · 583 阅读 · 0 评论 -
二分插入排序(折半插入排序)--排序算法(六)
折半插入排序思想直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素。排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。直接插入排序就像打牌抓牌一样,手中的牌都是有序的,当从下面拿起一张牌的时...原创 2019-02-23 14:20:05 · 3176 阅读 · 1 评论 -
归并排序--排序算法(五)
归并排序排序思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。比较适用于处理较大规模的数据,但比较耗内存。归并排序思想:申请空间,使其大小为两个已经排序序列之和(这是两...原创 2019-02-22 14:43:01 · 350 阅读 · 0 评论