Java算法
温柔如風
相见即是缘
展开
-
排序Java后台 两种方式
for(int i=0;i<list.size();i++){ if(list.get(i).getId().equals(goodsId)){ if(type==0 && i>0){ nextSort = list.get(i-1).getSort(); nextGoodsId = list.get(i-1).g原创 2021-12-10 09:29:35 · 505 阅读 · 0 评论 -
散列表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。这里有一串名字 他们各自对应一段编号。我们根据名字来找到编号 这种就称为散列表或是哈希表最简单的方法就是准备一个数组 将这些键值对散列在不同的单元格中,但是如果要找某一个编号就要从头开始遍历,比较耗时。而散列表先把键通过某种映射获得数组的索引,然后根据索引直接找到,这样就原创 2021-03-31 14:03:03 · 135 阅读 · 0 评论 -
冒泡排序
冒泡排序挺简单的一个算法,是我学到的第一个算法。主要思路就是相邻两个数比较,前数大于后数就移位置,使用嵌套循环直到排序完成 public void sort(int[] nums) { int temp; for (int i = 1; i < nums.length; i++) { for (int j = 0; j < nums.length - i; j++) { if (nums[j] >原创 2021-03-30 09:55:54 · 67 阅读 · 0 评论 -
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。主要就是每次循环时取出最小的值,放在前面排列下来比如 19 2 9 7 4 1第一次循环将1放到前面 1 19 2 9 7 4第二次循环将2放到前面 1 2 19 9 7 4第三次循环将4放到原创 2021-03-29 13:44:26 · 71 阅读 · 0 评论 -
平衡二叉树
这是一棵现实生活的树,这是我们程序员的树倒过来的树,树的树干我们称作根节点,树枝叫子节点,但是如果子节点没有子节点的话那就叫叶子节点一个子节点最多有两个子节点,一左一右的结构,而且左子节点会小于右子节点假设我们现在要查找11这个数我们先比较 8 发现大于8 那么往右子节点走 再比较9 发现还是比大 那么再往右走 跟11比较 最后匹配我们只需要查找三次 树的高度就是查找的次数相比于传统线性数据结构 比如链表同样查找11 那么就需要比较包括11在内的5次 11前面的全要查找。所以二叉树原创 2021-03-25 14:38:28 · 111 阅读 · 1 评论 -
huffman编码
哈夫曼编码主要用于压缩,出现频率较多的字符分配越短的编号。如图f出现6次 e出现8次 c出现15次 d出现21次 a出现55次这时候我们准备构建一个二叉树,先构建一个新的子节点 Z ,从容器中取出最小值f作为其左子节点 再取出最小值e作为右子节点接下来把Z节点放回容器 ,由于永远按照从小到大排序,故Z节点排在c前现在进行第二轮操作,构建一个新的子节点 Z ,从容器中取出最小值14作为其左子节点 再取出最小值c作为右子节点进行第三轮操作,构建一个新的子节点 Z ,从容器中取出最小值d作为其原创 2021-03-24 14:17:18 · 100 阅读 · 1 评论 -
Java-栈
栈(stack):是线性表的一种,限制仅在线性表的一端进行插入和删除操作。其中允许插入和删除的一端称为栈顶(top),不允许插入和删除的一端称为栈底(bottom)虽然栈只有压栈(push)和出栈(pop)两个简单的操作,但我们可以实现更复杂的效果比如检查字符串中‘{[()]}’ 括号能否对上先讲一下思路:当匹配到 {,[,( 时入栈。匹配到),],}出栈比对代码实现import java.util.Scanner; import java.util.Stack; public原创 2021-03-24 13:38:26 · 128 阅读 · 2 评论 -
Java算法-二分查询
二分查找也称折半查找(Binary Search),它是一种效率很高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分查询就是每次遍历时拟定一个中位数,若查找的数小于当次查询的中位数 则右边界等于当此查询的中位数减少-1若查找的数小于当次查询的中位数 则左边界等于当次查询的中位数+1根据左边界右边界进行折半操作直到匹配正确数以上是我的理解模拟一下普通数组遍历速度这是二分查找这就是二分查找的速度…为什么二分查询的时间远远快于普通遍历的时间?因为原创 2021-03-05 12:16:55 · 91 阅读 · 0 评论