数据结构与算法
文章平均质量分 52
以案例为线索,逐步讲解每个数据结构及算法的用法
星河百穿
一个正在学Python的程序猿
展开
-
【快速排序(C语言实现)】
快速排序;算法原创 2022-10-29 00:01:47 · 417 阅读 · 1 评论 -
算法设计:将给定的二叉树输出其等价的中缀表达式
树与二叉树;中缀表达式;算法设计原创 2022-10-21 17:38:00 · 1669 阅读 · 0 评论 -
【二叉树的遍历】
二叉树的4种遍历原创 2022-10-21 16:15:43 · 386 阅读 · 0 评论 -
动态规划初步
动态规划的理论性和实践性都比较强,一方面需要理解“状态”、“状态转移”、“最优子结构”、“重叠子问题”等概念,另一方面又需要根据题目的条件灵活设计算法。可以这样说,对动态规划的掌握情况在很大程度上能直接影响一个选手的分析和建模能力。动态规划是一种用途很广的问题求解方法,它本身并不是一个特定的算法,而是一种思想,一种手段。下面通过一个题目阐述动态规划的基本思路和特点。数字三角形有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数,如下图:从第一行的数开始.原创 2021-04-14 23:54:06 · 157 阅读 · 0 评论 -
算法:递归(汉诺塔)
要点:函数定义中调用函数自身的方式形成递归。递归的定义:递归,就是在运行的过程中调用自己。数学上有个经典的递归例子叫阶乘,阶乘通常定义如下:n! = n(n-1)(n-2)…(1)为了算出这个阶乘,可以通过一个简单的循环累积去计算阶乘。n! = n(n-1)!阶乘的例子揭示了递归的两个关键特征。存在一个或多个基例,基例不需要再次递归,它是确定的表达式。所有递归链要以一个或多个基例结尾。以计算阶乘为例,可以把阶乘写成一个单独的函数。def fact(n): if n == 0.原创 2021-04-07 23:33:18 · 2652 阅读 · 1 评论 -
算法:约瑟夫环(猴子选大王)
约瑟夫问题有时也称为约瑟夫斯置换,是一个计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”。问题来历据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。原创 2021-03-24 13:54:29 · 1846 阅读 · 3 评论 -
算法:逆序对
逆序对什么是逆序对呢?百度百科这样解释:设 A 为一个有 n 个数字的有序集 (n>1),其中所有数字各不相同。如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A[i] > A[j],则 <A[i], A[j]> 这个有序对称为 A 的一个逆序对,也称作逆序数。定义:对于一个包含N个非负整数的数组A[1…n],如果有i < j,且A[ i ]>A[ j ],则称(A[ i] ,A[ j] )为数组A中的一个逆序对。例如,数组(3原创 2021-03-08 23:04:43 · 8763 阅读 · 16 评论