自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jeffery♚的博客

希望和大家一起进步

  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 算法笔记——基数排序(Java实现)

基数排序基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。1. 基数排序 vs 计数排序 vs 桶排序基数排序有两种方法:这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:基数排序:根据键值的每位数字来分配桶;计数排序:每个桶只存储单一键值;桶排序:每个桶存储一定范围的数值;2. LSD 基数排序动图演示3.代码实现public

2020-07-22 21:10:56 159

原创 算法笔记——堆排序(Java实现)

堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;堆排序的平均时间复杂度为 Ο(nlogn)。1. 算法步骤创建一个堆 H[0……n-1];把堆首(最

2020-07-22 21:08:23 156

原创 算法笔记——三路快速排序算法(Java实现)

三路快速排序算法——上接双路快速排序算法有没有相比于双路快速排序算法更适合处理大规模重复数据的优化呢?答案自然是有的,也就是三路快速排序算法。三路快速排序的思想非常简单,我们之前都把数组分成两部分,小于v和大于v,而在三路快速排序中,我们将数组分成三部分,小于v、等于v和大于v,这样分割之后,我们再次递归就可以不考虑等于v的部分,而是直接在大于v和小于v两部分进行递归,当v的数量很大时,这样所带来的的效率提升非常明显。下面详细说明一下排序的逻辑:我们设置lt索引来指向小于v的最后一个元素所在的位置

2020-07-22 21:04:16 283

原创 算法笔记——快速排序优化之双路快排序(Java实现)

双路快速排序算法——上接快速排序经过我们的优化,我们的基础快速排序在大多数情况下都有着不错的表现,但是面对某些特殊情况,它依然存在着问题,下面我们来测试这样一组测试用例,我们的量级N缩小为十万量级(更大的量级可能导致递归调用过多,栈溢出而报错),但是我们的数组范围缩小至0-10,可以预见,我们的数组将包含大量的重复元素,//测试QuickSortpublic static void main(String[] args){ int N = 100000;

2020-07-22 21:01:36 277

原创 算法笔记——快速排序及优化(Java实现)

快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。快速排序又是一种分而治之思想在排序算法上的典型应用。本质上来看,快速

2020-07-22 20:57:53 381

原创 算法笔记——归并排序及优化(Java实现及非递归实现)

归并排序归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);自下而上的迭代;对于得到的数据,我们首先将其以二分法划分,对于数据量为n的数组,我们就会得到log2nlog_2nlog2​n个层级,而我们将数据从最底层进行归并的算法的效率能够达到O(n)的话,

2020-07-22 20:47:42 233

原创 算法笔记——希尔排序(Java实现)

希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。希尔排序(Shell Sort)是插入排序的一种

2020-07-22 20:37:32 132

原创 算法笔记——插入排序及优化(Java实现)

插入排序插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够理解。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。1. 算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果

2020-07-22 20:34:47 293

原创 算法笔记——选择排序及优化(Java实现)

选择排序选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了。1.算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。2. 动图演示3.源代码import java.util.*;public class SelectionSort { // 我们

2020-07-22 20:31:12 162

原创 测试排序算法效率的工具类SortTestHelper

我所发布的排序算法中设计的效率测试均使用此类完成,大家有需要可以拿去用import java.lang.reflect.Method;import java.lang.Class;import java.util.Random;public class SortTestHelper { // SortTestHelper不允许产生任何实例 private SortTestHelper(){} // 生成有n个元素的随机数组,每个元素的随机范围为[rangeL, range

2020-07-22 20:27:19 1058

原创 算法笔记——冒泡排序(Java实现)

冒泡排序冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证

2020-07-22 20:14:08 100

原创 Java switch语句用法以及对JDK7实现switch识别字符串方式的探究(反编译)

switch多选择结构多选择结构还有switch case语句可以实现switch case语句判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支语法switch(expression){ case value: //语句 break;//可选 case value: //语句 break;//可选 //任意数量的case语句 default ://可选 //语句}

2020-05-28 11:06:09 575

原创 两种方法生成java帮助文档(控制台和IDEA,Javadoc)

JavaDocjavadoc命令是用来生成自己的API文档的参数信息@author 作者名@version 版本号@since 指明需要最早使用的JDK版本@param 参数名@return 返回情况@throws 异常跑出情况示例程序/** * @author :Jeffery * @version :1.0 * @since 1.8 */public class Doc { String name; /** * * @par

2020-05-27 20:03:16 910

原创 关于java编码的一些疑问

在学习Python过程中,IDLE对多种转义的支持让我印象很深刻毕竟这样可以让我们的输出更加多样。但是我所知java的char好像只识别\u下面的代码的输出与我所想的一样char a = '\u0061';char b = '\u00c6';int c = 0x00c6;System.out.println(a);System.out.println(b);System.out.println((char)c);但是当我尝试和Python一样进行如下转义时char a = '\U0

2020-05-26 23:46:42 133

原创 常见DOS命令1

Dos命令打开CMD方式1.开始+系统+命令提示符2.win+R输入cmd打控制台3.在任意文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口4.资源管理器地址栏前面加上cmd 路径按下Enter键常用Dos命令#切换盘符#查看当前目录下所有文件 dir#切换目录 cd change directory#cd /d E:(盘符) 切换盘#cd .. 退回上级目录#清理屏幕 cls (clear screen)#退出终端 exit#查看电脑i

2020-05-26 16:35:23 129

原创 数据结构CH1

数据结构第一节笔记序章数据结构:组织和访问大量数据的系统方法算法:在有限时间内执行某个任务的分布过程程序 = 数据 + 算法科学范式实验归纳:人类早期的科学实践,以记录描述自然现象为主要特征,称为“实验科学”(第一范式)模型推演:科学家尝试简化模型,去掉干扰,留下关键因素,通过演算进行归纳总结(第二范式)仿真模拟:随着计算机仿真越来越多成熟,可以逐渐取代实验,成为科研的常规方法(第三范式)数据密集型科学发现:随着数据的爆炸性增长,计算机将不仅仅能做模拟仿真,还能进行分析总结,得到理论(第四

2020-05-26 14:22:39 293

原创 软件工程引论

软件工程笔记1第零章引论软件工程Software engineering所有发达国家的经济依赖软件发达国家在软件上的投入占了GNP很大一部分越来越多的系统由软件控制软件工程关注专业软件开发的理论、方法和工具软件成本Software costs软件成本常是计算系统成本中的大部分。PC上的软件成本比硬件大。软件维护的成本比开发的成本大。对于长周期的系统,维护成本可能是开发成本的多倍。软件工程关注高效的软件开发。软件产品Software products通用产品Generic produ

2020-05-20 19:07:52 1001

TankWar.7z

华中科技大学面向对象课设作品,Android版坦克大战,比较简陋,仅供参考,如果想要文字相关的设计材料可以私信我,存在未解决的bug,慎用为自己的课设作业

2020-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除