数据结构与算法
数据结构与算法
draymond7107
我回来了⊙▽⊙
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法大纲
位运算 排序 数组 链表 队列 堆 树 并查集 图 hash原创 2021-02-22 14:23:09 · 216 阅读 · 0 评论 -
十大排序
十大排序–冒泡排序 十大排序–选择排序 十大排序–插入排序 十大排序–堆排序 十大排序–快排 冒泡排序 两两比较,不符合时交换。 选择排序 从未排序的部分,找出最小(最大)的,放到已排序部分的右边。 插入排序 依次获取未排序的数据,与已排序的从右向左比较。不符合,已排序的向右移 常见的坑 归并排序的额外空间复杂度可以变为O(1),“归并排序 内部缓存法”,但是将变的不再稳定。(不如使用堆排序) “原地归并排序”,会让时间复杂度变为O(N^2) 。 (不如直接使用冒泡,插入等) 快速排序稳定性改进,“01_原创 2021-02-20 21:19:12 · 167 阅读 · 0 评论 -
求数组中的最小值
分而治之 递归 /** * 递归(分而治之) * * @param arr * @param leftIndex * @param rightIndex * @return */ public int min(int[] arr, int leftIndex, int rightIndex) { if (leftIndex == rightIndex) { return arr[le原创 2021-01-06 21:19:17 · 1087 阅读 · 0 评论 -
java 算法复杂度
1 组成部分 时间复杂度 空间复杂度 2 怎样评估算法的优劣 2.1 常数时间的操作 概念 如果一个操作的执行时间不以具体样本量变化而变化,每次执行的时间都是固定的,则成为常数操作 举例: /* 单独的 sum+=i; 不会因为n的值变化,而导致赋值操作时间变化,是常数操作。 而整个for循环会根据n的变化而变化,不是常数项操作 */ int sum=0; int n=10; for(int i=0;i<n;i++){ sum+=i; } 常见的常数操作 数组寻址 常见的算数运算(原创 2020-12-17 14:21:06 · 470 阅读 · 1 评论 -
java算法习题--位运算
判断两个数值是否相等 (x^y)==0 同样一批数,只有1个数是奇数次。求这个数 public static void oddTimeNum(int[] array){ int oddNum=array[0]; for (int i=1;i<array.length;i++){ oddNum^=array[i]; } System.out.print(oddNum); } 把2进制整型数去除高位的1,只保留最右侧的1 2进制类型 00101100 -> 00000100原创 2020-12-11 15:02:51 · 351 阅读 · 0 评论 -
二进制运算
二进制操作 Java基础系列-二进制操作 & “与” 运算 都为1则为1,否则为0 | “或”运算 有1为1,全0为0 ~ “非”运算 0为1,1为0 ^ “亦或”运算 相同为0 ,不同为1 << “左移”运算 符号位保持不变的情况下剩余全部左移一位,低位补0,相当于乘以2的结果 >> 有符号“右移”运算 符号位保持不变的情况下剩余全部右移一位,高位补0,相当于除以2的结果 >>> 无符号“右移”运算 连带符号位一起右移 警告:该方式不适合计算。。适用于"众原创 2020-11-30 14:13:47 · 498 阅读 · 0 评论 -
leetCode-01两数之和
问题 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 方案 方案1 map键值对 将nums所有的元素存到map中,遍历nums,查找是否存在 target-nums[i] pu原创 2020-11-11 21:07:09 · 166 阅读 · 0 评论 -
稀疏数组转化
1:使用场景 下棋,一个棋盘更多的位置是没有棋子的,在保存进度文档的时候,如果棋盘的所有元素都保存,则占用空间大。(棋盘类似二维数组) 2:作用 压缩,将大的二维数组压缩成小的二维数组。(只保存了有效元素的二维数组) 3:实现思路 3.1 新的二维稀疏数组大小 (有效元素个数+1)*3 3.2 获取原棋盘:长度、行数、有效元素个数 将此信息存储到新的二维稀疏数组第一行,便于读档时还原 3.3 存储位置对照 稀疏数组第一列: 原二维数组有效元素 行号 稀疏数组第二列: 原二维数组有效元素原创 2020-09-21 10:33:02 · 187 阅读 · 0 评论
分享