算法
echo6120
这个作者很懒,什么都没留下…
展开
-
【python算法】图的遍历与最小路径
数据结构中,图的应用场景非常广泛,与我们的生活息息相关,在基于图做的应用中,比较典型的有:在交通规划中的最小生成树,用于导航的最短路径等。比如下图这里,我们介绍邻接表表示方法。在表示图的时,我们一般使用如下的两个实例属性,表示邻接表的字典nodeNeighbors,标志是否已访问的字典visited。针对如下的图:来实现广度优先遍历以及深度优先遍历:简述思想:1...原创 2020-04-16 18:05:10 · 1430 阅读 · 0 评论 -
【python算法】买卖股票的最佳时机问题之一二三
买卖股票的最佳时机问题一给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入 : [7, 1, 5, 3, 6, 4]输出 : 5解释 : 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时...原创 2020-02-23 13:56:47 · 1187 阅读 · 0 评论 -
【python算法】在无序列表中寻找第k大的数
#利用的是插入算法def find_k(testlist,k): for i in range(1,k): for j in range(i,0,-1): if testlist[j] > testlist[j-1]: testlist[j],testlist[j-1] = testlist[j-1],te...原创 2020-02-19 23:21:03 · 1235 阅读 · 0 评论 -
【python算法】判断字符串/链表是否是回文
一.判断字符串是否为回文def huiwen(teststring): len_s = len(teststring) flag = True for i in range(len_s//2): if teststring[i] != teststring[len_s-1-i]: flag = False ...原创 2020-02-17 22:53:51 · 525 阅读 · 1 评论 -
【python算法】比较两个版本号的大小
def versionCompare(v1, v2): v1_check = re.match("\d+(\.\d+){0,2}", v1) v2_check = re.match("\d+(\.\d+){0,2}", v2) print(v1_check.group()) if v1_check is None or v2_check is None or v1...原创 2020-02-06 19:14:53 · 625 阅读 · 0 评论 -
【python算法】队列的操作
# encoding=utf-8#定义节点类class Node(object): def __init__(self,val): self.val = val self.next = None#定义队列类class Queue(object): def __init__(self): self.first = ...原创 2020-02-03 11:59:16 · 170 阅读 · 0 评论 -
【python算法】插入排序
关于插入排序,其算法的核心思想是:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数。即:序列的第一个元素,肯定是有序的,把第二个元素和第一个元素相比,插入到合适的位置,这样前两个元素就有序了,接着,把第三个元素插入到前面包含两个元素的有序列表中,以此类推,直至插完第n个数据。细节说明:将多个数字进行升序排序时,每次基于有序的列表进行插入,方法类似冒泡排序...原创 2019-11-06 11:29:36 · 325 阅读 · 0 评论 -
python实现链表的创建/增加/删除/查询/输出
class Node(object): def __init__(self,value=None,next=None): self.value = value self.next = next#输出一个链表def Printlinklist(node): while node: print(node.value) ...原创 2019-10-05 22:05:16 · 960 阅读 · 1 评论 -
【Python算法】快速排序
快速排序的算法步骤概要:1.设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数A[0])作为关键数据;2.然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。3.值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。主旨:通过一趟排序将要排序的数据分割成独立的两部分,其中一部...原创 2018-06-28 10:43:44 · 194 阅读 · 0 评论 -
【Python算法】二分法
1.算法:(设查找的数组期间为array[low, high])(1)确定该期间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]b.array[k]<T 类似上面...原创 2018-06-28 10:40:11 · 857 阅读 · 0 评论 -
【Python算法】冒泡算法
冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置比如有五个数: 12, 35, 99, 18, 76, 从大到小排序, 对相邻的两位进行比较第一趟:第一次比较: 35, 12, 99, 18, 76第二次比较: 35, 99, 12, 18, 76第三次比较: 35, 99, 18, 12, 76第四次比较: 35, 99, 18, 76, 12经过第一趟比较后, 五...原创 2018-06-21 21:52:38 · 1055 阅读 · 0 评论 -
【Python算法】斐波那契数列
典型的递归算法~~~~快速排序会用到~先做个铺垫斐波那契数列即著名的兔子数列:1、1、2、3、5、8、13、21、34、……数列特点:该数列从第三项开始,每个数的值为其前两个数之和,用python实现起来很简单:定义Fibonacci数列如下:非递归方法的函数实现:def fibs(num):result=[0,1]for i in range(num-2):result.append(re...原创 2018-06-21 21:58:14 · 656 阅读 · 0 评论 -
【python算法】二叉树的先序中序后序遍历
#coding=utf-8#二叉树的遍历#定义节点类class TreeNode: def __init__(self,val,left=None,right=None): self.val = val self.left = left self.right = right#定义二叉树类class BinaryTree: def __init__(self,root=N...原创 2018-07-09 22:45:22 · 421 阅读 · 0 评论 -
【python算法】合并两个有序数组为一个有序的大数组(时间复杂度最低)
思路按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时退出循环假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了。#coding=utf-8#合并数据test1 = [1,2,5,7,9]test2=[2,4,6,8,10,11,34,...原创 2018-07-09 09:56:02 · 1579 阅读 · 0 评论 -
【python算法】字符串反转与单链表的反转
1.字符串反转字符串反转有很多种方式,举例其中常见的3种a = "hello"a_reverse= a[::-1]print(a_reverse)b = "yangyangchi"b_list = list(b)b_list.reverse()b_reverse = ''.join(b_list)print(b_reverse)def reverse(c): ...原创 2018-06-29 13:29:49 · 741 阅读 · 0 评论