算法
文章平均质量分 78
无限之阿尔法
这个作者很懒,什么都没留下…
展开
-
排序(三):谁主沉浮——堆与堆排序
leetcode:https://leetcode-cn.com/problems/sort-an-array/堆定义&&性质堆(heap)是计算机科学中一类特殊的数据结构的统称,通常是一个可以被看作是一棵树的数组对象。定义:n 个元素的序列 {k1,k2,ki,…,kn} 当且仅当满足下关系时,称之为堆。ki≤k2ik_i \le k_{2i}ki≤k2i 且 ki≤k2i+1k_i \le k_{2i+1}ki≤k2i+1 或者 ki≥k2ik_i \ge k_{2i}k原创 2022-01-03 21:29:55 · 1031 阅读 · 1 评论 -
排序(二):分而治之——快速排序 && 归并排序
快速排序过程在待排序的N个记录中任取一个元素(通常取第一个记录)作为基准,称为基准记录;定义两个索引 left 和 right 分别表示“首索引” 和 “尾索引”,key 表示“基准值”;首先,尾索引向前扫描,直到找到比基准值小的记录(left != right),并替换首索引对应的值;然后,首索引向后扫描,直到找到比基准值大于的记录(left != right),并替换尾索引对应的值;若在扫描过程中首索引等于尾索引(left >= right),则一趟排序结束;将基准值(key)替换首原创 2022-01-03 21:15:35 · 1286 阅读 · 9 评论 -
排序(一)——简单排序:插入排序 && 冒泡排序
leetcode:https://leetcode-cn.com/problems/sort-an-array/插入排序过程插入排序的过程分为两步:首先和当前位置的前一个元素进行比较,如果前一个元素比当前元素大,则后续进行调整,将前面的大元素不断向后移动,并找到合适的位置将当前元素插入进去;如果发现前一个元素比当前元素小,则不会进行调整,默认前面的元素已经有序。示意图如下:插入排序的特点是:基于比较、数据移动完成排序,一次比较操作后不发生数据移动或仅仅交换一对相邻的数据元素。代码cl原创 2022-01-03 21:08:21 · 4813 阅读 · 23 评论 -
LeetCodeHOT100——第二题:两数相加(No.2)
LeetCode HOT100——第二题:两数相加(No.2)思路代码pythonC++其他思路l1.val、l2.val、carry(进位)之和确定 l3。注意事项: 注意链表的建立方法,确认链表尾部是否为空。代码pythonclass Solution(object): def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :原创 2021-02-26 19:55:48 · 273 阅读 · 0 评论 -
LeetCode HOT100——第一题:两数之和(No.1)
LeetCode HOT100——第一题:两数之和(No.1)题目思路代码C++版本:python版本相关用法复习C++和python语法,以后准备渐渐用python刷leetocde.题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。思路利用哈希表建立键值对值——位置,一边遍历数组,一边建立哈希表。找到target数对结束。时间复杂度: O(n)空间复杂度: O(n)代码C++版本:class Solutio原创 2021-02-25 20:19:31 · 253 阅读 · 0 评论 -
数据结构复习:常用排序算法小结
常用排序算法总结排序算法的分类常用排序算法复杂度及稳定性时间性能空间性能算法特点插入排序交换排序:选择排序归并排序基数排序说明:本博客适合复习《数据结构》时阅读。排序算法的分类比较类,非比较类常用排序算法复杂度及稳定性时间性能平均的时间性能时间复杂度为 O(nlogn) :快速排序、堆排序和归并排序时间复杂度为 O(n^2 ) :直接插入、冒泡和简单选择排序时间复杂度为 O(n) : 基数排序当待排记录序列按关键字顺序有序时直接插入和冒泡排序:O(n)快速排序:O(n^2)原创 2020-06-29 16:48:20 · 512 阅读 · 0 评论