数据结构与算法
对于数据结构和算法的学习。
now ~ try
仅用于记录一下自己的学习过程,水平不高,如有打扰,还望见谅。
展开
-
链表(python)
1. 链表定义链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表。单链表如下图所示:单链表中的结点类型描述如下:class Node: def __init__(self, item): self.item = item self.next = None2. 链表的实现方式2.1 头插法头插法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,原创 2022-03-19 17:18:05 · 2662 阅读 · 0 评论 -
快速排序(python)
快速排序思路:取一个元素p(第一个元素),使元素p归位列表被p分为两部分,左边都比p小,右边都比p大递归完成排序动画演示如下:代码如下:def partition(li, left, right): tmp = li[left] while left < right: while left < right and li[right] >= tmp: #从右面找比tmp小的数 right -= 1 # 往左走原创 2022-03-18 22:55:12 · 786 阅读 · 0 评论 -
直接插入排序(python)
插入排序的基本思想:每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成。要将元素L(i)插入到已有子序列L[1…i-1]中,需要执行以下操作:查找出L(i)在L[1…i-1]中的插入位置 k将L[k…i-1]中的所有元素依次后移一个位置将L(i)复制到L(k)动画演示如下:代码如下:def insert_sort(li): for i in range(1, len(li)): #i 表示摸到的牌的下标 tmp = li[i]原创 2022-03-17 22:15:17 · 921 阅读 · 0 评论 -
选择排序(python)
选择排序的思想:每一趟(如第 i 趟)在后面的 n - i + 1 个待排序元素中选取关键字最小的元素,作为有序子序列的第 i 个元素,直到第 n - 1 趟做完,待排序元素只剩下一个,就不用再选了。其中,一趟排序会将一个元素放在最终位置上。简单选择排序:假设排序表为L[1,…,n],第 i 趟排序即从L[i,…,n]中选择关键字最小的元素与L[i]交换。动画演示如下:代码如下:def select_sort(li): for i in range(len(li)-1): # i是第几趟原创 2022-03-16 21:56:17 · 387 阅读 · 0 评论 -
冒泡排序(python)
排序:重新排列表中的元素,使表中的元素满足按关键字有序的过程。冒泡排序:从后往前(或从前往后)两两比较相邻元素的值,若为逆序,则交它们,直到序列比较完,这称为第一趟冒泡。下一趟冒泡时,前一趟确定的最小(最大)元素,不再参与比较,每趟冒泡的结果是把序列中的最小(或最大)元素放到了序列的最终位置。以此类推,直到表有序,冒泡排序结束。动画演示如下:代码如下: for i in range(len(li)-1): #第i趟 exchange = False for原创 2022-03-16 21:21:52 · 784 阅读 · 0 评论 -
顺序查找与二分查找(python)
查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。1. 顺序查找顺序查找也称线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到最后一个元素为止。代码如下:def linear_search(li, val): for ind, v in enumerate(li): if v == val: return ind else: return None时间复杂度为O(n)2. 二分查找二分查找又称原创 2022-03-16 20:32:37 · 1597 阅读 · 0 评论