
python数据结构与算法
用python对数据结构与算法的实现
_伍六七_
这个作者很懒,什么都没留下…
展开
-
python实现归并排序(merge)
归并排序算法思想:归并排序就是将待排序列不断一分为二,直到分为单个元素作为一个序列,然后向上合并,合并的过程中交换位置,最终合并完成时已经是有序状态了.归并排序分为两个过程:分裂和归并分裂的过程:借鉴二分查找中的分析结果,时间复杂度为O(logn)归并的过程:相对于分裂的每个部分,其所有数据项都会被比较和放置一次,所以是线性复杂度,其时间复杂度是O(n)综合考虑:每次分裂的部分都进行一次O(n)的数据项归并,总的时间复杂度是O(nlog n)归并排序需要额外消耗一倍的存储空间.实现py原创 2021-08-18 22:39:10 · 809 阅读 · 0 评论 -
python实现希尔排序(shell)
希尔排序算法思想:希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法,希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止.希尔排序时间复杂度是 O(n^(1.3-2)),空间复杂度为常数阶 O(1).希尔排序没有时间复杂度为 O(n(logn)) 的快速排序算法快 ,因此对中等大小规模表现良好.但对规模原创 2021-08-16 22:25:46 · 363 阅读 · 0 评论 -
python实现插入排序
插入排序算法思想:插入排序(Insertion Sort)基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的,个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2).是稳定的排序方法.一般以待排序列第一个元素作为一个有序的序列,从第二个元素开始到最后,依次往有序序列插入,同时能够使有序序列依然保持有序,最终待排序列变为有序.实现python版本 3.7.2# 由于移动操作仅包含1次赋值,是交换操作的1/3,所以插入排序性能会比较好一些def ins原创 2021-08-14 18:38:30 · 433 阅读 · 0 评论 -
python实现选择排序
选择排序算法思想:它的原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的一端,直到全部待排序的数据元素排完.选择排序是不稳定的排序方法(如果待排数据已经有序,复杂度仍不会减少)选择排序(Selection sort)是对冒泡排序的改进版,优化不是很大: 冒泡排序每比较一次交换一次位置,而选择排序是记录下最大值(或最小值)的下标,在一轮比较结束后只交换一次,因此少了很多交换次数.实现python版本 3.7.2# 选择排序 对冒泡排序的改进版,优化不是很大de原创 2021-08-11 23:45:12 · 258 阅读 · 0 评论 -
python实现冒泡排序
冒泡排序算法思想:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端.这是一个最简单基础的排序方法,通常它的时间效率比较差(O(n^2)),但是它不需要额外的存储空间.实现python版本 3.7.2def bubbleSort(alist)原创 2021-08-07 23:02:41 · 349 阅读 · 0 评论 -
python实现链表(单链表)
python对链表的实现什么是链表?链表就是若干个节点连接起来组成的一条链子.每个节点存储着自己的数据的同时还记录着下一个节点的位置.它可以是有序(各节点的数据是按照指定标准排序的)的,也可以是无序(各节点在链表中的顺序是插入时的顺序,没有刻意进行排序)的由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间(因为只有通过前一个节点才能访问到当前节点).一般链表具有插入节点,删除节点,原创 2021-07-20 22:45:38 · 2606 阅读 · 2 评论 -
python实现快速排序
快速排序仅用于记录学习过程,如有错误还望指出.算法思想:网上随便一查到处都是快排的介绍.核心就是把一个不易解决的大问题分成若干个容易解决的小问题;把小问题的结果汇总在一起就是大问题的结果,这一思想叫做分治法.以对数字进行排序为例:用大白话说就是随便找一个数作为代表,然后把比这个数小数的放到这个数左边,把比这个数大的数放到这个数的右边,再对左右两边进行同样的操作.实现python版本 3.7.2# 快速排序def quick(array, low, high): if low原创 2021-07-04 18:02:54 · 607 阅读 · 0 评论 -
python实现队列(含约瑟夫环)
python对队列的实现什么是队列?队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的特性:先进先出(FIFO,First In First Out),它就像在超市买完东西排队结账一样,先排的人先结账走人用python实现队列(version 3.7.2)python最直观的特点就是简洁,因此实原创 2021-07-16 13:14:34 · 1818 阅读 · 5 评论 -
python内置数据结构的时间复杂度
什么是时间复杂度?在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。(摘自百度百科)简单来说就是用来描述一段代码执行时总共需要执行多少次,每一个操作都看做是一次执行以大写字母’‘O’'开头,加上"()",括号中写次数.例如:O(n),O(1),O(logn),时间复杂度越低说明速度越快O(1) < O(logn) < O(n) < O(nlogn) < O(n) < O(n2) < O(2n) … (没有列全原创 2021-07-16 10:40:49 · 494 阅读 · 0 评论 -
python实现栈(含括号匹配)
python对栈的实现什么是栈?栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾(栈顶)进行插入和删除操作的线性表。栈的特性:先入后出(FILO,First In Last Out), 先入栈的会被后入栈的压到下边,因为只有一个出入口,所以,后入栈的在最上边要先出栈,一般只有 push(入栈),pop(出栈)两种操作用python实现栈(version 3.7.2)python最直观的特点就是简洁,因此实现一个简单的栈只需几行代码笔者为了轻便,没有在对栈的操作之前做一些类原创 2021-07-15 21:31:17 · 1023 阅读 · 2 评论