![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 52
一叶烬秋
一个热爱技术的斜杠青年,目前研究方向:Spring、Apache、sql、数学与算法、Java8
展开
-
排序算法之冒泡排序
排序算法 冒泡排序 简单排序算法。 最坏时间复杂度:O(N^2);最优时间复杂度:O(N) 算法稳定性:稳定的排序算法 算法原理:对待排序列逐位进行两两比较并交换位序。 算法步骤: 确定需要对待排序列进行几次逐位比较; 循环对待排序列进行逐位比较 Java实现 package com.example.demo.service; import java.util.Arrays; /** * @since 2021-0-0 */ public class InsertSort { p原创 2021-03-10 16:24:52 · 54 阅读 · 0 评论 -
排序算法之插入排序
排序算法 插入排序 概述 插入排序是简单直观。对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。实现上通常采用in-place排序,需要反复把已排序元素逐步向后挪位,为新元素插入提供空间。 时间复杂度:O(N2),最好为O(n),最坏是O(n2) 空间复杂度:O(1) 对随机数据的排序,效率比冒泡和选择都高。对极端数据可能存在交换次数过的情况 算法步骤 从待排序列中拿出一个元素; 从后往前扫描已排序列; 若该元素小于被扫描元素,将该元素直接插入被扫描元素之前;若不小于被扫描元素,则插入被扫原创 2021-03-10 15:38:36 · 115 阅读 · 0 评论 -
排序算法之快速排序
排序算法 快速排序 快速排序是使用分支策略的一种改进型排序算法。 快速排序其实是在冒泡排序的基础上做出的一个改进。 基本思想:快速排序算法利用的是一趟快速排序,基本内容是选择一个数作为准基数,然后利用这个准基数将遗传数据分为两个部分,第一部分比这个准基数小,都放在准基数的左边,第二部分都比这个准基数大,放在准基数的右边. 算法步骤: 待排序列:6 1 2 7 9 3 4 5 10 8 1.任意选择一个待排序列的数字比如最左边的6作为基准数 2.先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交原创 2021-03-09 20:48:51 · 151 阅读 · 0 评论 -
aes加解密
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.util.Locale; import javax.crypto.C原创 2021-03-03 09:35:36 · 110 阅读 · 0 评论 -
算法学习阶段性总结(一)
算法罗列与特征 算法基本概念 定义:通过系统规范的方法或指令,以解决实际当中问题的一种策略机制。三个要求:有限,指令明确,切实有效。 递推法:按照特定规律计算序列中某个项值。 递归法:即迭代。关键概念-栈 二分查找 大O表示法 选择排序 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素 中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 快速排序 对冒泡排序的改进,排序过程可以递原创 2021-03-01 08:53:20 · 168 阅读 · 0 评论 -
算法之分治法
程序=算法+数据结构 著名计算机科学家niklaus wirth提出了著名论断程序=数据结构+算法,这里我们就来谈谈分治法。 分治法与贪心法的区别 首先我们需要区分一下贪心法与分治法,贪心法是局部最优解,旨在用局部最优累加成一个最终结果;而分治法,则是将一个大问题分解成k个小问题,这每个小问题互相独立且与大问题相似,我们只需要递归的解决掉这小问题就可以实现解决大问题的目标。 日常生活中,大部分人都会采用贪心法来处理日常事务,比如当你在找工作的时候,你可能大概率选择一个薪水比较高的工作,而不会去考虑一个长远的原创 2020-06-04 23:23:29 · 220 阅读 · 0 评论