
数据结构
文章平均质量分 54
Aries888
数据分析师,坚持学习和分享高质量内容
展开
-
Python3&数据结构之二分查找
#实现一个二分查找#输入:一个有序数组和要找的元素#输出:待查找的元素的位置def binary_search(list,item): low = 0 high = len(list) - 1 while low <= high: mid = (low + high) // 2 guess = list[mid] ...原创 2018-11-28 22:59:52 · 211 阅读 · 0 评论 -
2019秋招滴滴数据分析DS:解一元一次方程
while 1: s = input() if not s:break c = eval(s.replace('x','*x').replace("=","-(") + ")",{'x':1j}) print(-c.real / c.imag)原创 2019-08-27 21:52:35 · 543 阅读 · 0 评论 -
2019秋招京东笔试:姓名排序
线上的时候没做出来了,考完做的不知道对不对res = ['zhang san','li si','wang wu','wang liu','wang qi','zhang wu','li wu']arr = [x.split()[0] for x in res]dict = {}for i in arr: if i not in dict: dict[i] = ...原创 2019-08-24 21:51:52 · 313 阅读 · 0 评论 -
Python3&数据结构之树结构
什么是树?来自百度百科的定义:树(tree)是包含n(n>=0)个结点的有穷集,其中:(1)每个元素称为结点(node);(2)有一个特定的结点被称为根结点或树根(root)。(3)除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树(subtree)。树...原创 2018-12-06 23:23:49 · 1348 阅读 · 0 评论 -
Python3&数据结构之希尔排序
希尔排序(Shell sort) 算法描述:Step1:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序。Step2:依次缩减增量再进行排序。Step3:待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。算法结束。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序相较...原创 2018-12-05 23:58:58 · 200 阅读 · 0 评论 -
Python3&数据结构之二叉树
实现二叉树以及遍历在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:(1)空二叉树——如图(a);(2)只有一个根结点的二叉树——如图(b);(3)只有左子树——如...原创 2018-12-07 23:50:21 · 686 阅读 · 0 评论 -
Python3&数据结构之冒泡排序
冒泡排序顾名思义,这个算法的过程可以理解为水泡从水底冒出来这种现象,且越到上面的气泡越大。一、基本步骤:1.冒泡排序要排序n个数,由于每遍历一趟只排好一个数字,则需要遍历n-1趟,所以最外层循环是要循环n-1次 2.每次趟遍历中需要比较每归位的数字,则要在n-1次比较中减去已排好的i位数字,则第二层循环要遍历是n-1-i次注:1中每次循环都会吐出最大(最小)气泡(也就是数字),...原创 2018-05-10 13:41:32 · 976 阅读 · 0 评论 -
Python3&数据结构之合并(归并)排序
合并(归并)排序和快速排序一样也采用了分而治之(divide and conquer,D&C)的思想不过对比快速排序,mergesort没有pivot(中心点)分的部分:它是把一个无序数组按照数组大小的中心数分为两部分 if len(n) < 2: #分的阶段,即divide return n mid = len(n) // 2...原创 2018-12-01 15:16:10 · 386 阅读 · 0 评论 -
Python3&数据结构之快速排序
然后使用快速排序使用了分而治之(divide and conquer,D&C)的思想主要思想就是把一个无序数组分为3个部分:递归的思想重复以上步骤中心点(pivot):该点是随机选的,一般选数组中索引为0,即第一个数当中心点 左边(less):小于等于中心点的数组成的数组 右边(greater):大于中心点的数组成的数组参考算法图解给出的代码#quicksortdef ...原创 2018-11-30 16:35:16 · 180 阅读 · 0 评论 -
Python3&数据结构之递归
#递归def fact(x): if x == 1: return 1 else: return x * fact(x - 1)#tail recursion(尾递归)def tail_recusion(x,total=1): if x == 1: return total else: re...原创 2018-11-30 11:30:23 · 271 阅读 · 0 评论 -
Python3&数据结构之选择排序
第一种写法:来自算法图解def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(1,len(arr)): if arr[i] < smallest: smallest = arr[i] smallest_i...原创 2018-11-30 00:00:46 · 147 阅读 · 0 评论 -
Python3&数据结构之插入排序
插入排序(insert sort)插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法步骤:1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相...原创 2018-12-04 12:59:01 · 212 阅读 · 0 评论 -
Python3&数据结构之广度优先搜索(Breadth First Search,BFS)
说到BFS,首先要介绍图什么是图?图模拟一组链接,由节点和边组成图分为有向图(directed graph)和无向图(undirected graph)有向图中的关系是单向的,所以可以由箭头表示无向图中直接相连的节点互为邻居,所以没有箭头参考算法图解,例如,下面两个图是等价的。那么广度优先搜索有什么用呢?它可以帮助回答下面两类问题:从节点A出发,有前往节点B的路径吗...原创 2018-12-02 13:13:57 · 816 阅读 · 0 评论 -
Leetcode 892. 三维形体的表面积(Python3)
在N*N的网格上,我们放置一些1 * 1 * 1的立方体。每个值v = grid[i][j]表示v个正方体叠放在对应单元格(i, j)上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,...原创 2019-08-30 16:01:40 · 330 阅读 · 0 评论