数据结构与算法
文章平均质量分 87
xbhog
这个作者很懒,什么都没留下…
展开
-
前缀和以及差分的解题步骤与技巧
前缀和以及差分问题:导论:该博客记录前缀和问题以及差分的解题步骤与相应公式;理解其中变化,有不完善的地方慢慢补全;如果有错误欢迎指出!前缀和:首先需要知道前缀和的概念:即数组该位置之前的元素之和。还有一个重要的点,在进行前缀和的运算时,下标从1开始,设数组a[0]=0;比如a[5] = {0,1,2,3,4};求a[1]的前缀和:a[1];求a[2]的前缀和:a[1]+a[2];…为什么下标要从1 开始:为了方便后面的计算,避免下标转换,设为零,不影响结果前缀和的作用: 快速求出原创 2021-01-30 13:55:49 · 212 阅读 · 1 评论 -
05-选择排序
选择排序算法的原理:选择排序是从冒泡排序演化而来的,每一轮(趟)比较出最小的那个值,放到第一个位置,然后在每轮的无序区中选出最小的值放到第二个位置。目的:从小到大排序图示:算法的关键点是:有序区跟无序区、无序区最小的位置首先我们写一个简单的选择排序,用到python的内置模块:#思路是我们创建一个新列表,将原列表中的最小数选出后添加到新列表的中,实现排序。#定义一个简单的选择排序...原创 2019-10-14 21:11:30 · 187 阅读 · 0 评论 -
04-冒泡排序实现
本节我们说说常见的排序算法首先我们常见的排序算法有:一般排序:快速排序:其他排序:冒泡排序快速排序希尔排序选择排序堆排序技术排序插入排序归并排序技术排序首先从一般排序开始说起,介绍冒泡排序:定义:列表每两个相邻的数,如果前面比后面大,则交换这两个数,一趟排序完成后,无序区减少一个数,有序区增加一个数。上面的动画是冒泡排序的一趟,一趟以后...原创 2019-10-13 20:31:05 · 98 阅读 · 0 评论 -
03-两种查找算法实现
本节的内容:什么是列表查找;顺序查找(线性查找);二分查找;顺序查找与二分查找比较;运行时间;增速问题一:什么是查找查找:在一些数据元素中,通过一定的方法找出与给定的关键词相同的数据元素的过程。二:顺序查找(线性查找):从列表中查找指定的元素定义:从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止。输入:列表、带查找的元素输出:元素下标(未...原创 2019-10-13 20:26:37 · 133 阅读 · 0 评论 -
02-空间复杂度、递归
一:空间复杂度:用来评估算法内存占用大小的问题空间复杂度的表示方式:使用了几个变量:O(1);使用了长度为n的一位列表:O(n);使用了m/n行n列的二位列表:O(mn)/O(n**2);公司一般采取的策略是“空间换时间”===》怎么内存大小来降低网页或者应用的打开时间/访问时间。二:递归:递归的特点:1). 调用自身 2). 结束条件#当我们输入3的时候,一下代码的打印结果...原创 2019-10-13 20:22:33 · 215 阅读 · 0 评论 -
01-时间复杂度
时间复杂度:用来评估算法的运行效率的一个公式。其中的“1”、“n”是一个单位,表示几次第一个例子:print("hello world") ====> O(1)===>(运行一次)#--------------------------------------------------for i in range(n): print("hello world") ====...原创 2019-10-13 20:20:20 · 388 阅读 · 0 评论