UML&DS&Algorithm&DP
文章平均质量分 72
UML、数据结构、算法、设计模式
ooooooooooooooxiaosu
这个作者很懒,什么都没留下…
展开
-
UML类图
1.类图基础属性类图的表示+表示public#表示protected~表示default,也就是包权限-表示private_下划线表示static 斜体表示抽象2.类与类之间关系在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)类与类之间的关系2.1泛化介绍:泛化(G...转载 2020-11-03 17:17:06 · 296 阅读 · 0 评论 -
【Algorithm】3des加解密
算法概述本文主要用了两个参数进行加密解密一个key:秘钥,一个iv:偏移量。如果不想要偏移量可根据下面两个步骤进行去除:1.那cipher.init()方法只传入两个参数即可;cipher.init(Cipher.ENCRYPT_MODE, deskey);2.将"DESede/CBC/PKCS5Padding"改成"DESede/ECB/PKCS5Padding"即可ECB模式和CBC模式的区别CBC是密码分组链接模式ECB是电码本模式ECB模式:优点:.转载 2022-03-15 13:54:21 · 916 阅读 · 0 评论 -
【算法Algorithm】桶(Bucket)排序
算法思想确定待排序数列(n个数)的最小值和最大值,确定桶的数量k;然后把这个n个数“均匀的”放到k个桶中;再对每个桶中的数列进行排序(可以使用其他排序算法);最后依次读取每个桶中的数就是排好序的整个数列。使用一个映射函数来达到把n个数放到k个桶的操作,其规则是“左侧”桶(先放置的)中的数全部小于“右侧”桶中的数列,即每个桶都有一个取值范围(如:第一个桶存放1-5,第二个桶存放6-10),不在这个范围的就是一个空桶。代码实现复杂度和稳定性参考文章...原创 2020-11-02 14:52:18 · 243 阅读 · 0 评论 -
【算法Algorithm】计数(Count)排序
算法思想计数排序是非比较排序,即没有像arr[i] < arr[i + 1]这样的比较。该算法适用于数量大且值的范围小的待排序数组,例如:待排序数组长度是1w(或10w,100w),但数组中值的范围在[0,100];所以,得明确待排序数组中数据的范围算法思想:引入一个计数数组,该数组的作用就是记录待排序数组中某一个值出现的次数(待排序数组中的值对应计数数组的下标);循环待排序数组的每一个值,计数数组的下标为该值时加1;然后循环计数数组,根据每个下标值的数量列出下标值,从而得到排好序的数原创 2020-10-20 17:02:39 · 466 阅读 · 0 评论 -
【算法Algorithm】快速(Quick)排序
算法思想从待排序数组中找一个索引位置(例如,中间位置、开始位置、结束位置)的数作为轴,以这个轴为基准,把大于这个轴的数放到它的后面,把小于这个轴的数放到它的前面,至于相等的可以放在前面也可以放在后面;轴定好位置后,就不动了,也不对它进行操作(排序)了;然后再重复上述步骤对左右两边的数据进行排序。代码实现public static void main(String[] args) { }private static void sort(int[] arr, int left原创 2020-10-19 10:25:51 · 116 阅读 · 0 评论 -
【算法Algorithm】归并(Merge)排序
算法思想把待排序数组进行二分,左边归并排序,右边归并排序;然后再两者归并如果左(或右)边还是无序的,那么对左(或右)再进行二分,分成更小的左和右;左边归并,右边归并,然后再两者归并...依次类推那程序是怎么知道分到什么时候“正好”左边有序且右边也有序呢?答案是不知道(人可以看一眼待排数组并作出像“前三个有序,后三个有序”的判断),所以是分到最小,即紧邻的“两个”。所以站在程序的角度就是对待排序数组进行二分,再二分......直到分到最小;然后再从最小的一对左和右进行归并,成为一原创 2020-10-15 15:54:02 · 585 阅读 · 1 评论 -
【算法Algorithm】希尔(Shell)排序
算法思想希尔排序是对插入排序的优化。先把待排序数组进行间隔分组,对每一个分组进行插入排序,相同间隔大小的分组排序完成后,缩小间隔,再分组,再插入排序......直到间隔为1,即最原始的插入排序。在分隔逐步细化的过程中,大数会集中到后半部分,小数会集中到前半部分,虽然它们此时不一定有序。代码实现二分间隔分组法public static void main(String[] args) { // 构造一个无序的数组 int[] arr = {2, 5, 6, 8, 9,原创 2020-10-14 14:27:09 · 101 阅读 · 2 评论 -
【算法Algorithm】插入(Insertion)排序
算法思想所谓“插入”,就是把“新数”插入已经排好序的数组之中。代码实现public static void main(String[] args) { // 构造一个无序的数组 int[] arr = {2,5,6,8,9,7,4,1,3,0}; sort(arr); System.out.println("最终结果:" + Arrays.toString(arr));}public static void sort(int[] arr) { //原创 2020-10-12 17:57:54 · 362 阅读 · 1 评论 -
【算法algorithm】冒泡(bubble)排序
算法思想待排序的数组元素依次两两比较,如果前面的大于后面的,则进行交换代码实现public static void main(String[] args) { // 构造一个无序的数组 int[] arr = {2,5,6,8,9,7,4,1,3,0}; sort(arr); System.out.println(Arrays.toString(arr));}private static void sort(int[] arr) { for (in原创 2020-10-10 14:59:57 · 128 阅读 · 0 评论 -
【算法algorithm】选择(Selection)排序
算法思想在每一次的循环中,找到最小值(放到“最前边”),然后交换两个位置上的值;重复。代码实现public static void main(String[] args) { // 构造一个无序的数组 int[] arr = {2,5,6,8,9,7,4,1,3,0}; sort(arr); System.out.println(Arrays.toString(arr));}public static void sort(int[] arr) {原创 2020-10-09 18:04:06 · 313 阅读 · 1 评论