数据结构与算法
文章平均质量分 78
jianglinwei_xian
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法之快速排序
快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤为:1. 从数列中挑出一个元素,称为"基准"(pivot),2. 重新排序数列原创 2017-10-06 23:46:26 · 350 阅读 · 0 评论 -
Python 实现对列
队列(queue):队列是先进先出(FIFO, First-In-First-Out)的线性表,在具体应用中通常用链表或者数组来实现,队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作,队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。如图所示:代码实现:# coding = utf-8class MyQ原创 2017-10-06 12:11:01 · 496 阅读 · 0 评论 -
基于Python单向链表实现尾部、任意位置添加,删除
# coding = utf-8# 创建节点类class Node(object): def __init__(self, data): # 定义指向域 self.next = None # 定义数据域 self.data = data# 创建指向类class LinkDict(object):原创 2017-10-04 20:42:46 · 3038 阅读 · 1 评论 -
Python实现双向链表的基本操作
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。代码实现:# coding = utf-8# 定义节点类class Node(object): def __init__(self, data):原创 2017-10-05 18:26:05 · 4562 阅读 · 0 评论 -
基于Python单向循环链表实现尾部、任意位置添加,删除
# coding = utf-8# 定义节点类class Node(object): def __init__(self, data): # 定义数据域 self.data = data # 定义指向域 self.next = None# 定义单向循环链表类class Single_Circle(原创 2017-10-05 00:24:47 · 1646 阅读 · 0 评论 -
Python实现二分查找
二分查找:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子原创 2017-10-02 21:05:25 · 334 阅读 · 0 评论 -
排序算法之桶排序
在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。首先出场的我们的主人公小哼,上面这个可爱的娃就是啦。期末考试完了老师要将同学们的分数按照从高到低排序。小哼的班上只有5个同学,这5个同学分原创 2017-10-10 20:10:04 · 275 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:1. 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。2. 对每一原创 2017-10-06 16:49:17 · 467 阅读 · 0 评论 -
排序算法之插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。代码实现:# coding = utf-8def insert_sort(alist): # 计算列表长原创 2017-10-06 22:38:31 · 274 阅读 · 0 评论 -
排序算法之选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移原创 2017-10-06 18:20:07 · 295 阅读 · 0 评论 -
Python实现栈
栈(stack) :栈又称之为堆栈是一个特殊的有序表,其插入和删除操作都在栈顶进行操作,并且按照先进后出,后进先出的规则进行运作。如下图所示: 代码实现:# coding = utf-8class Stack(object): def __in原创 2017-10-06 11:37:05 · 530 阅读 · 0 评论
分享