数据结构
Zhang_Raymond
机器学习与人工智障
展开
-
图解排序算法及实现——选择排序(Selection sort)
选择排序(Selection sort)是一种简单直观的排序算法。思路左边有序区,右边乱序区。从右边剩下的乱序数字中找最小,放到左边。(反过来也是可以的)具体操作: 多次比较,一次交换。每次从右边剩余数字中选最小,与乱序区最左边的元素交换,使左边有序区边界右移。复杂度平均时间复杂度 О(n²) 最坏时间复杂度 О(n²) 最优时间复杂度 О(n²)图例来自...原创 2018-09-03 13:05:49 · 799 阅读 · 0 评论 -
图解排序算法及实现——插入排序 (Insertion Sort)
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。通常以扑克牌举例: 右边新来的牌,与左边有序的老牌依次比较,最终插到合适的位置。实现Basic: 新旧牌每次都要交换一下(两次操作:旧牌后移一位,新牌前移一位)。Advanced: 每次比较,旧牌后...原创 2018-09-03 13:20:57 · 3250 阅读 · 0 评论 -
图解排序算法及实现——冒泡排序(Bubble Sort)
教科书式的排序算法:冒泡排序思路从某一方向开始,依次两两比较,把小的放左边,大的放右边从右往左: 最小值被移到了最左边。 【冒泡法】的本意从左往右: 最大值被移到了最右边。 此时其实应该叫 【沉石法】图解推荐VisuAlgo,一个数据结构和算法动态可视化的网站。 从左到右:沉石法 从左到右:沉石法python实现for实现1: (冒泡法...原创 2018-09-03 16:22:05 · 4938 阅读 · 0 评论 -
图解排序算法及实现——归并排序 (Merge Sort)
思路归并排序(MergeSort),是创建在归并操作上的一种有效的排序算法,效率为O(nlogn) 。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。实现递归法: 自顶向下(Top-Down)直接在原序列上直接归并排序,每次归并排序分别对左右两边进行归并排序,直至细分到两两分组。...原创 2018-09-03 16:56:20 · 39868 阅读 · 0 评论 -
图解排序算法及实现——希尔排序 (Shell Sort)
希尔排序(ShellSort)也称增量递减排序算法,即跨多步版的InsertionSort,是InsertionSort基础上的改进版。InsertionSort可以看作ShellSort中gap=1的特例。希尔排序是非稳定排序算法。希尔排序通过将全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是...原创 2018-09-03 17:45:30 · 7233 阅读 · 0 评论 -
图解排序算法及实现——快速排序 (Quick Sort)
接下来让我们看看大名鼎鼎的快速排序,光名字就觉得牛哄哄。 那么具体怎么讲待1.单路排序图例如下 比照了示意图,很容易写出代码:def QuickSort(arr): n = len(arr) _quickSort(arr,0,n-1)def _quickSort(arr,l,r): if l >= r: re...原创 2018-09-04 02:52:01 · 25725 阅读 · 1 评论 -
动态规划(DP)的原理、实现及应用
1. 由一个例子说开: 斐波那契数列斐波那契数列是由0和1开始,之后的数就是前两个数的和。首几个费波那契系数是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……那我们如何用计算机来生成这些数呢,也就是说,即求斐波那契数列第n位的值。很简单,用递归就可以了:def fib(n): if n in [0,1]: ...原创 2018-10-03 01:56:08 · 14494 阅读 · 0 评论 -
python实现二叉树层序遍历(逐层打印二叉树)
题目要求给定一个二叉树,要求从上往下逐层打印该二叉树节点的值,每层从左往右打印。解题思路——广度优先遍历实际上就是广度优先遍历, 借助一个队列(这里用数组代替)就可以实现:1、先将root节点加入队列2、队列不为空时取队列首节点3、打印节点的值,然后将该节点的左、右子节点先后加入队尾(核心步骤,广度优先体现在这)4、回到2,直到队列为空该方法对满二叉树和非满二叉树都符合题目要求。...原创 2019-04-09 12:14:09 · 10125 阅读 · 1 评论