![](https://img-blog.csdnimg.cn/20210504220122753.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 65
算法
在下喵星人
这个作者很懒,什么都没留下…
展开
-
高级排序--希尔排序
文章目录前言一、插入排序的缺点二、希尔排序三、 寻找间隔四、java实现五、总结前言希尔排序是基于插入排序实现的(如果不了解插入排序,可以先阅读这篇文章)一、插入排序的缺点假设数据中最小的数排在靠右端位置上,这本来是较大值的数据所在位置,把这个小数据移动到左边位置上,所有的中间数据项都必须向右移动一位。这个步骤对每一个数据项都执行了将近N次的复制。(虽然不是所有数据项都必须移动N个位置,但是数据项平均移动了N/2位置)执行N次N/2个位移,总共是N2/2N^2/2N2/2次复制。因此,插入排序原创 2021-08-21 10:24:47 · 101 阅读 · 0 评论 -
简单排序--插入排序(三)
前言插入排序算法任然需要O(N^2)的时间,但是一般情况下,他要比冒泡排序快一倍,比选择排序要快一点。一、插入排序假定排序从中间开始,可以更好的理解插入排序。此时,队列左边已经排好序,在队列中间标记一个元素,在这个作为标记的元素左边已经是局部有序,(注意,局部有序在冒泡排序和选择排序中不会出现)这个被标记的元素右边是未排序的。我们需要做的是在左边有序的队列中的适当位置插入被标记的元素。这意味着左边有序的队列需要先向右移腾出空间。而被标记的元素需要出列,以提供位移空间。插入排序的代码如下: pu原创 2021-08-14 12:23:32 · 99 阅读 · 0 评论 -
简单排序--选择排序(二)
前言选择排序改进了冒泡排序,将必要的交换次数从O(N2)O(N^2) O(N2)减少到O(N)O(N)O(N).不幸的是比较次数仍保持为O(N2)O(N^2)O(N2).一、选择排序进行选择排序就是把所有的元素扫描一趟,从中挑出最小的元素,最小的元素和队列最左端的元素交换位置,即放到0号位置。现在最左端的元素是有序的,不需要再交换位置了。(注意,这个算法中有序的元素都排在队列的左边,而冒泡排序则是排在队列右边)排序代码如下: public void selectionSort(){原创 2021-08-11 23:29:20 · 94 阅读 · 0 评论 -
使用LinkedHashMap实现LRU算法
LinkedHashMap是比HashMap多了一个链表的结构。与HashMap相比LinkedHashMap维护的是一个具有双重链表的HashMap,LinkedHashMap支持2中排序一种是插入排序,即插入是什么顺序,读出来的就是什么顺序。一种是使用排序,最近使用的会移至尾部例如 key1 key2 key3 key4,使用key3后为 key1 key2 key4 key3了。accessOrder为true表示使用顺序,false表示插入顺序。基于LinkedHashMap的使用顺序的特性,我们原创 2021-08-08 11:10:16 · 410 阅读 · 0 评论 -
java使用栈解析算术表达式
系列文章目录1. java使用栈翻转字符串2. java使用栈解析分隔符匹配文章目录系列文章目录前言一、后缀表达法二、把中缀表达式转换成后缀表达式1. 人类是如何计算中缀表达式的值2.如何将中缀表达式转换成后缀表达式三、转换规则1. 中缀表达式转成后缀表达式的java代码2. 后缀表达式求值过程3. 后缀表达式的求值规则4. 后缀表达式求值的java代码总结前言前面两篇文章分析了栈的基本使用,最后我们使用栈来解析算术表达式。如 4+6,或者5*(2+3),或者((2+4)7)+3*(8-4)原创 2021-08-01 17:02:39 · 1707 阅读 · 2 评论 -
java使用栈解析分隔符匹配
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言栈通常用于解析某种类型的文本串。通常提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn a原创 2021-07-31 11:06:21 · 350 阅读 · 0 评论 -
java使用栈翻转字符串
最近面试遇到现场写代码解析算术表达式,当时只想到使用栈来解析,但是没有最终写完,所以重新温习栈的知识。栈的定义:只允许访问一个数据项即最后插入的数据项。移除这个数据项后才能访问倒数第二个数据项。即先进后出代码实现如下:public class Main { public static void main(String[] args) { String s = "abcdef"; System.out.println(reverse(s)); }原创 2021-07-31 10:08:13 · 337 阅读 · 0 评论 -
简单排序--冒泡排序(一)
冒泡排序算法运行起来非常缓慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时时一个非常好的算法。使用冒泡排序对无序数据进行排序如下图冒泡排序的执行过程如下:从数组的最左边开始,比较0号位置和1号位置的数字。如果左边的数字(0号位置)大,就交换两个数字位置。如果右边数字大,就什么也不做。然后右移一个位置比较1号位置和2号位置的大小。重复上述流程。以下是冒泡排序要遵循的规则:比较两个数字。如果左边数字比较大,则两个数字交换位置。向右移动一个位置,继续比较下面两个数字。原创 2021-05-05 23:06:02 · 208 阅读 · 0 评论 -
二分查找的实现细节(java 代码)
如果数据存储是有序的,那么我们可以考虑使用二分查找,查询我们需要的数据,这种查找比线性查找快很多,尤其对大数组来说更为明显。二分查找也叫折半查找。可以看出使用二分查找在查找数字 37 时只需3次,而线性查找查找37时需要11次。线性查找最坏的情况需要遍历整个数据。二分查找步骤如下:步数所猜的数结果可能值的范围01~59123太低29~59241太高29~37331太低37~37437正确二分查找代码实现如下:/原创 2021-05-04 22:04:00 · 134 阅读 · 0 评论