想利用一些空余时间学一学python与matlab,与同学建立不知道能坚持多久的学习联盟,每周出一部分题目,利用一周时间完成原理文档与程序编写,并在一周后互相讨论。
有想一起学习的小伙伴评论区留言呀~
- 前言
- 一、儒雅随和锅包肉:2021.10.13~10.20(入门算法主题)
- 题目一:快速排序算法
- 解答:
- 题目二:二分查找算法
- 题目三:最长不重复子串
- 题目四:三数之和
前言
冲冲冲!
一、儒雅随和锅包肉:2021.10.13~10.20(入门算法主题)
整体要求:需考虑算法的效率,能够适应大容量数据运算;每个题目需对原理进行分析。
题目一:快速排序算法数据:[1,1,3,3,2,2,6,6,6,5,5,7]
要求:利用快速排序算法进行列表数据排序
1.文字说明快速排序算法原理
2.代码需有充足注释
解答:
-
在数组中选一个基准数(通常为数组第一个);
-
将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边;
-
对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序;
-
具体原理如下图所示。
数据:[1, 2, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 10, 11, 11, 11,11, 12, 13, 13, 15, 16, 16, 20, 21, 21, 23, 24, 26,26, 27, 28, 28, 31, 33, 33, 34, 35, 38, 38, 39, 40,42, 43, 45, 45, 46, 46, 47, 47, 51, 52, 52, 53, 53,55, 55, 56, 56, 57, 57, 57, 58, 59, 61, 62, 64, 66,66, 67, 68, 69, 69, 71, 72, 72, 74, 74, 75, 76, 78,78, 79, 79, 79, 79, 80, 82, 85, 88, 89, 90, 90, 91,91, 91, 94, 99, 99]
要求:给定一个有序数组 arr 和一个目标元素 target ,返回该 target 在 arr 中的索引,若不存在,返回-1。本题arr如上所示,target为66
1.文字说明快速排序算法原理
2.代码需有充足注释
题目三:最长不重复子串
数据:1.“abcbefgf” 2.“abcdef” 3."abbcddefh"
要求:给定一个字符串,找出没有重复字符的最长的子串。例如输入“abcbefgf”,答案是 “cbefg”。
1.文字说明快速排序算法原理(动态规划+哈希查找)
2.代码需有充足注释
题目四:三数之和
数据:arr = [-3,-1,-2,1,2,3]
要求:给定一个数组和目标数target,找出数组中a,b,c满足 a+b+c = target 的所有组合。例如:arr = [-3,-1,-2,1,2,3],target = 0。输出为 [(-3,1,2),(-2,-1,3)]
1.代码需有充足注释
2.时间复杂度要求为O(n**2) ,空间复杂度要求O(1)



