随笔分类 -  数据结构和算法 / 算法

摘要:题目描述 对于一个正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。 给定一个整数n,如果是完美数,返回 true;否则返回 false。 示例 1: 输入:num = 28 输出:true 解释:28 = 1 + 2 + 4 + 7 + 14 1, 2, 4, 7, 阅读全文
posted @ 2023-06-20 07:46 晓枫的春天 阅读(345) 评论(0) 推荐(0) 编辑
摘要:题目描述 所谓“变位词”是指两个词之间存在组成字母的重新排列关系 如:heart和earth,python和typhon 为了简单起见,假设参与判断的两个词仅由小写字母构成,而且长度相同 参考实现1 def anagramSolution(s1, s2): alist1 = list(s1) # 字 阅读全文
posted @ 2023-05-24 21:57 晓枫的春天 阅读(25) 评论(0) 推荐(0) 编辑
摘要:快速排序 这是一个比较快的排序方式,中心思想是对在无序数组种找到一个基准值,然后找出比基准值小的元素和比基准值大的元素组成一个有序整体,在递归调用达到排序效果的一种算法 参考实现 Python 实现 def quickSort(arr): if arr is None or len(arr) < 2 阅读全文
posted @ 2023-05-24 10:44 晓枫的春天 阅读(6) 评论(0) 推荐(0) 编辑
摘要:参考实现 ''' 插入排序 初始是一个有序列表,每次从无序列表取一个元素放到合适的位置完成排序 ''' def insert_sort(list): for i in range(1, len(list)): # 此时 i 表示无序元素的索引 temp = list[i] # 新来的待排序元素 j 阅读全文
posted @ 2023-05-23 22:20 晓枫的春天 阅读(5) 评论(0) 推荐(0) 编辑
摘要:选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序 阅读全文
posted @ 2023-05-23 07:06 晓枫的春天 阅读(15) 评论(0) 推荐(0) 编辑
摘要:基本冒泡排序 ''' 冒泡排序 比较列表相邻的两个元素,前面>后面,交换位置,一趟比较后,无序列表个数减1,有序列表个数+1 复杂度 O(N^2) ''' import random def bubble_sort(list): for i in range(len(list) - 1): for 阅读全文
posted @ 2023-05-22 21:20 晓枫的春天 阅读(9) 评论(0) 推荐(0) 编辑
摘要:线性查找 ''' 列表线性查找 线性查找就是从列表起始位置一次查询,直到查询到目标值,或者遍历整个列表完毕才结算查找过程 线性查找复杂度 O(n),比较慢 ''' from call_time import * @call_time def liner_search(list, value): fo 阅读全文
posted @ 2023-05-20 09:29 晓枫的春天 阅读(16) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示