![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
文章平均质量分 51
唐僧洗澡不秃头
秃头不洗澡,洗澡不秃头
展开
-
剑指 Offer 03-数组中重复的数字
剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 方法一:哈希表 / Set利用数据结构特点,容易想到使用哈希表(Set)记录数组的各个数字,当查找到重复数字则直接返回。算法流程:初始化: 新建 HashSet ,转载 2021-04-18 09:18:25 · 235 阅读 · 0 评论 -
数据结构与算法学习之排序算法
文章目录1、排序算法的介绍1.1、排序的分类2、算法的时间复杂度2.1、度量一个程序(算法)执行时间的两种方法2.2、时间频度2.2.1、基本介绍2.2.2、举例说明-基本案例2.2.3、举例说明-忽略常数项结论:2.2.4、举例说明-忽略低次项结论:2.2.5、举例说明-忽略系数结论:2.3、时间复杂度2.4、常见的时间复杂度说明:2.4.1、常数阶O(1)2.4.2、对数阶O(log2n)2.4.3、线性阶O(n)2.4.4、线性对数阶O(nlogN)2.4.5、平方阶O(n²)2.4.6、立方阶O(n原创 2021-04-17 20:33:26 · 368 阅读 · 0 评论 -
剑指 Offer 52-两个链表的第一个公共节点
剑指 Offer 52. 两个链表的第一个公共节点输入两个链表,找出它们的第一个公共节点。如下面的两个链表:](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/14/160_statement.png)在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Re原创 2021-04-14 19:27:12 · 80 阅读 · 0 评论 -
leetcode-179-最大数
179. 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:"10"提示:1 <= nums.length <=原创 2021-04-13 18:02:55 · 135 阅读 · 0 评论 -
leetcode-81-搜索旋转排序数组 II
81. 搜索旋转排序数组 II已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,原创 2021-04-07 16:39:28 · 115 阅读 · 0 评论 -
leetcode-88. 合并两个有序数组
88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中*,*使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:n原创 2021-04-05 12:12:26 · 47 阅读 · 0 评论 -
面试题-17.21-直方图的水量
面试题 17.21. 直方图的水量给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6方法一、 双指针加数学思维总体积减去柱子体积就是水的容量利用左右指针的下标差值计算出每一层雨水和柱子的体积。如下图,第一层体积为11,第二层为8原创 2021-04-02 11:02:27 · 167 阅读 · 0 评论 -
leetcode-1006-笨阶乘
1006. 笨阶乘通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。例如,factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1。相反,我们设计了一个笨阶乘 clumsy:在整数的递减序列中,我们以一个固定顺序的操作符序列来依次替换原有的乘法操作符:乘法(*),除法(/),加法(+)和减法(-)。例如,clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1。然而,这些运算仍然使用通常的算术原创 2021-04-01 19:57:04 · 87 阅读 · 0 评论 -
leetcode-90-子集 II
90. 子集 II给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]本题解基于「78. 子集的官方题解」,请读者在充分理解该题解后继续阅读。方法一:迭代法实现子集枚举思路考虑数组 [1,2,2],选择前原创 2021-03-31 18:17:43 · 132 阅读 · 0 评论 -
leetcode-78-子集
78. 子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]方法一:迭代法实现子集枚举思路与算法因为在这数组中没有重复的元素,所有我们可以利用二进制的0,1表示元素是否出现,从而进行组合。记原原创 2021-03-31 18:16:45 · 205 阅读 · 0 评论 -
leetcode-74-搜索二维矩阵
74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:false原创 2021-03-30 18:13:43 · 78 阅读 · 0 评论 -
剑指 Offer 20-表示数值的字符串
剑指 Offer 20. 表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。解题思路这题编码难度不大,难点在于归纳各种正确的情况‘.’出现正确情况:只出现一次,且在e的前面‘e’出现正确情况:只出现一次,且出现前有数字‘+’ 、‘-’ 出现正确情况:只能在开头或出现在e的后原创 2021-03-29 20:22:09 · 73 阅读 · 0 评论 -
leetcode-61-旋转链表
61. 旋转链表给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 109解题思路 首先进行一个常规的非空的判断,然后开始我原创 2021-03-27 10:18:16 · 109 阅读 · 0 评论 -
leetcode-83-删除排序链表中的重复元素
83. 删除排序链表中的重复元素存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。示例 1:输入:head = [1,1,2]输出:[1,2]示例 2:输入:head = [1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序排列一次遍历法解题思路还是和 删除排原创 2021-03-26 09:58:41 · 177 阅读 · 0 评论 -
leetcode-82-删除排序链表中的重复元素 II
82. 删除排序链表中的重复元素 II存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链原创 2021-03-25 18:33:52 · 109 阅读 · 0 评论 -
leetcode-456-132 模式
456. 132 模式给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。**进阶:**很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn) 或 O(n) 的原创 2021-03-24 19:34:00 · 113 阅读 · 0 评论 -
leetcode-341-扁平化嵌套列表迭代器
341. 扁平化嵌套列表迭代器给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。示例 1:输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1]解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。示例 2:输入: [1,[4,[6]]]输出: [1,4,6]解释: 通过重复调原创 2021-03-23 16:24:49 · 50 阅读 · 0 评论 -
leetcode-191-位1的个数
191. 位1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。示例 1:输入:000000原创 2021-03-22 20:03:47 · 71 阅读 · 0 评论 -
leetcode-92-反转链表 II
92. 反转链表 II给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5]提示:链表中节点数目为 n1 <= n <=原创 2021-03-19 22:48:19 · 455 阅读 · 0 评论 -
leetcode-62-不同路径
62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3原创 2021-03-19 15:17:28 · 79 阅读 · 0 评论 -
leetcode-206-反转链表
206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL这里我采用的是递归的思路,要将第一个节点指向null,首先要让第二个节点指向第一个节点,而要让第二个节点指向第一个节点首先要让第三个节点指向第二个节点…最后一个节点指向前一个节点,之后返回该节点最为头结点。最初的代码class Solution { public ListNode reverse原创 2021-03-18 18:13:31 · 90 阅读 · 0 评论 -
leetcode-53-最大子序和
53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000原创 2021-03-17 19:11:32 · 58 阅读 · 0 评论 -
leetcode-141-环形链表
141. 环形链表给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,原创 2021-03-16 16:45:54 · 58 阅读 · 0 评论 -
leetcode-347-前 K 个高频元素
347. 前 K 个高频元素给定一个非空的整数数组,返回其中出现频率前 *k* 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可原创 2021-03-15 20:45:49 · 141 阅读 · 0 评论 -
leetcode-647-回文子串(使用中心扩散法)
647. 回文子串给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"提示:输入的字符串长度不会超过 1000 。中心拓展法:这里对于回文串长度为奇数和偶数是分开来处理的,对于奇数,中心原创 2021-03-14 17:05:15 · 100 阅读 · 0 评论 -
leetcode-102-二叉树的层序遍历
102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]题解:class Solution { public List<List<Integer>> levelOrder(Tree原创 2021-03-13 19:48:49 · 73 阅读 · 0 评论 -
leetcode-155-最小栈
155. 最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,n原创 2021-03-11 21:55:54 · 89 阅读 · 0 评论 -
leetcode-279-完全平方数
279. 完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例 1:输入:n = 12输出:3 解释:12 = 4 + 4 + 4示例 2:输入:n = 13输出:2解释:原创 2021-03-09 21:25:09 · 144 阅读 · 0 评论 -
leetcode-64-最小路径和
64. 最小路径和给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 &原创 2021-03-08 19:53:29 · 176 阅读 · 0 评论 -
leetcode-226-翻转二叉树
翻转二叉树翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。题解:从根节点开始,递归地对树进行遍历,并从叶子结点先开始原创 2021-02-09 12:03:30 · 110 阅读 · 0 评论 -
leetcode-461-汉明距离
汉明距离两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。题解代码:class Solution { //先异或再去判断1的个数 public int hammingDistance(原创 2021-02-08 13:57:14 · 77 阅读 · 0 评论 -
leetcode-44-接雨水
对于数组中的每个元素,我们找出下雨后水能达到的最高位置,等于两边最大高度的较小值 减去当前高度的值 就能的得到当前的存水量。在暴力方法中,我们仅仅为了找到最大值每次都要向左和向右扫描一次。但是我们可以提前存储这个值。因此,可以通过动态编程解决。找到数组中从下标 i 到最左端最高的条形块高度 left[i]。 找到数组中从下标 i 到最右端最高的条形块高度 right[i]。 扫描数组 height 并更新答案: 即累加 min(left[i],right[i])−height[i]到 num.原创 2020-11-14 08:56:32 · 128 阅读 · 0 评论 -
LeetCode 根据数字二进制下1的数目排序
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。示例 1:输入:arr = [0,1,2,3,4,5,6,7,8]输出:[0,1,2,4,8,3,5,6,7]解释:[0] 是唯一一个有 0 个 1 的数。[1,2,4,8] 都有 1 个 1 。[3,5,6] 有 2 个 1 。[7] 有 3 个 1 。按照 1 的个数排序得到的结果数组为 [0,1,原创 2020-11-06 21:20:05 · 70 阅读 · 0 评论 -
LEETCODE删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?/**Definition for singly-linked list.public class ListNode {int val;ListNode next;Lis原创 2020-10-18 19:47:05 · 58 阅读 · 0 评论 -
执行用时:10 ms, 在所有 Java 提交中击败了100.00% 的用户 内存消耗:39.6 MB, 在所有 Java 提交中击败了100.00% 的用户 zz-志 发布于 几秒前 0 解题思路
执行用时:10 ms, 在所有 Java 提交中击败了100.00% 的用户 内存消耗:39.6 MB, 在所有 Java 提交中击败了100.00% 的用户解题思路数组存储不同车位数代码class ParkingSystem { int []park; public ParkingSystem(int big, int medium, int small) { park=new int[]{big,medium,small}; } publ原创 2020-10-05 14:10:18 · 223 阅读 · 0 评论 -
给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。 请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户 内存消耗:38.7 MB, 在所有 Java 提交中击败了94.78% 的用户代码class Solution { public int[] shuffle(int[] nums, int n) { int s = n-1; int []res = new int[2*n]; for(int i=0;i<2*n;i+=2){ res[i] =原创 2020-09-29 21:15:38 · 637 阅读 · 0 评论 -
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 来源:力扣(LeetCode) 链
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户 内存消耗:38.7 MB, 在所有 Java 提交中击败了94.44% 的用户解题思路直接保存在原数组,不浪费内存代码class Solution { public int[] runningSum(int[] nums) { //int []arr; //int length=nums.length; //arr=new int[length]; //原创 2020-09-29 20:55:44 · 4554 阅读 · 0 评论 -
JAVA 实现插入排序
插入排序一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 [1] 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 [2] 。排序思想插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插原创 2020-08-19 09:11:41 · 125 阅读 · 0 评论 -
Java 希尔排序(Shell‘s Sort)
希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。它属于插入类排序,是将整个有序序列分割成若干小的子序列分别进行插入排序。同时也是一种非稳定排序算法。是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组(此时就是一个完整的直接插入排序),算法便终止。下面是Shell排序的Java实现pu原创 2020-08-15 22:31:21 · 85 阅读 · 0 评论 -
java 实现简单的选择排序算法
选择排序(Selection sort):选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。时间复杂度o(n^2),同时选择排序是不稳定的排序方法。选择排序思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。Java码实现public class Select原创 2020-08-13 14:10:44 · 123 阅读 · 0 评论