- 博客(24)
- 收藏
- 关注
原创 基数排序(Radix Sort)
基数排序(Radix Sort)基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。1 算法描述取得数组中的最大数,并取得位数;arr为原始数组,从最低位开始取每个位组成radix数组;对radix进行计数排序(利用计数排序适用于小范围数的特点);2 图演3 代码实现public class Sort {
2022-03-13 20:36:17 470 1
原创 桶排序(Bucket Sort)
桶排序(Bucket Sort)桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。1 桶排序适用数据范围桶排序可用于最大最小值相差较大的数据情况,比如[9012,19702,39867,68957,83556,102456]。但桶排序要求数据的分布必须均匀,否则可能导致数据都集中到一
2022-03-13 20:19:34 384
原创 计数排序(Counting Sort)
计数排序(Counting Sort)计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。1 算法描述找出待排序的数组中最大和最小的元素;统计数组中每个值为i的元素出现的次数,存入数组C的第i项;对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1。2 动图演示3 代码实现
2022-03-12 20:04:52 385
原创 堆排序(Heap Sort)
堆排序(Heap Sort)堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。1 算法描述将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区;将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,……Rn-1)和新的有序区(Rn),且满足R[1,2…n-1]<=R[n];由于交换后新的堆顶R[1]可能违反堆的性质,因
2022-03-11 17:57:59 208
转载 归并排序(Merge Sort)
归并排序(Merge Sort)归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。1 算法描述把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。2 图解可以看到这种结构很像一棵完全二叉树,本文的归并排序我
2022-03-11 16:23:40 161
原创 希尔排序(Shell Sort)
希尔排序(Shell Sort)1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。1 算法描述先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;按增量序列个数k,对序列进行k 趟排序;每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增
2022-03-09 23:44:14 1418
原创 插入排序(Insertion Sort)
插入排序(Insertion Sort)插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。1 算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素
2022-03-09 22:57:07 186
原创 java实现选择排序
选择排序选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。1 算法描述n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:初始状态:无序区为R[1…n],有序区为空;第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1…i-1]和R(i…n)。该
2022-03-09 22:34:52 4375
原创 java实现快速排序
快速排序快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。1 算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区
2022-03-09 21:36:51 174
原创 Java实现冒泡算法
冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1.1 算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3
2022-03-09 20:15:33 2910
原创 常见排序算法
排序算法算法的分类常见的排序算法主要分为两类:比较排序:通过比较来决定元素之间的相对顺序,由于其时间复杂度不能突破O(nlogn),因此非线性时间比较类排序。非比较排序:不通过比较来决定元素间的相对顺序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也被称为线性非比较排序。算法复杂度稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度:对排序数据的总的操作次数。反映当n变化时
2022-03-09 20:12:45 93
原创 文件的上传介绍(重点)
文件的上传介绍1、要有一个form标签,method=post请求2、form标签的encType属性值必须为multipart/form-data值encType=multipart/form-data表示提交的数据,以多段(每一个表单项一个数据段〉的形式进行拼接,然后以二进制流的形式发送给服务器3、在form标签中使用input type=file添加上传的文件4、编写服务器代码(servelet)接收,处理上传的数据需要导入两个jar包:commons-fileupload-1.2.1.
2022-02-16 22:49:40 461
原创 jsp中的out输出和response.getWriter输出的区别
jsp中的out输出和response.getWriter输出的区别response中表示响应,我们经常用于设置返回给客户端的内容(输出)out 也是给用户做输出使用的。当jsp页面中所有代码执行完成后会做以下两个操作: 1、执行c如t.flushO操作,会把out缓冲区中的数据追加写入到response缓冲区末尾 2、会执行response的刷新操作。把全部数据写给客户端 由于 jsp翻译之后,底层源代码都是使用out 来进行输出,所以一般情况下。我们在jsp页面中统一使用out来进
2022-02-16 14:26:05 442
原创 jsp的四个域对象
jsp的四个域对象四个域对象分别是:pageContext(PageContextlmpl类)当前jsp页面范围内有效request(HttpServletRequest类)一次请求内有效session(HttpSession类)一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)application(ServletContext类)整个web工程范围内都有效(只要web工程不停止,数据都在)域对象是可以像Map一样存取数据的对象。四个域对象功
2022-02-16 14:09:10 338
原创 jsp的常用脚本
jsp的常用脚本0.声明脚本(很少使用)声明脚本的格式:<%! 声明java代码 %>作用:可以给jsp翻译出来的java 类定义属性和方法甚至是静态代码块。内部类等。具体代码:<%--0.声明类属性--%> <%! private Integer id; private String name; private static Map<String,Object>map; %><
2022-02-16 13:46:01 413
原创 JavaScript 中关系(比较)运算
JavaScript 关系(比较)运算这里只给出与java不相同的部分名称符号含义等于==等于足简单的做字面值的比较全等于===除了做字面值的比较之外,还会比较两个变量的数据类型<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script t
2022-02-10 19:02:08 572
原创 javaScript 中的变量
javaScript 中的变量什么是变量?变量是可以存放某些值的内存的命名。javaScript的变量类型:变量类型字符串类型string对象类型object布尔类型boolean函数类型:function数值类型numberavascript 里特殊的值:值含义undefined未定义,所有js变量未健于初始值的时候,默认值都是undefined.null空值NAN全称是:Not a Number。非
2022-02-10 18:51:07 246
原创 javaScript的使用方法
javaScript的使用方法1.第一种方法只需要在 head 标签中,或者 body 标签中使用 script 标签来书写 javaScript 代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript">
2022-02-10 18:30:26 2355
原创 reached end of file while parsing
关于reached end of file while parsing错误匹配的括号–你可以看到你的代码中的每一个开着的括弧,它可能是一个方括号,大括弧或圆括号,你需要一个与之匹配的关闭的括弧。
2021-10-31 14:40:01 12322
原创 在ubuntu安装c语言环境
搭建C语言环境安装vim(编辑器),gcc(编译器)和build-essential(编译程序必须软件包的列表信息)sudo aptsudo apt-get install vimsudo apt-get install gccsudo apt-get install build-essential
2021-09-17 17:59:27 2355
原创 Ubuntu怎么设置全屏
Ubuntu不能够进行全屏显示,怎么设置。步骤:进入ubuntu系统后,点击虚拟机上的【虚拟机】->【安装 vmware tools】进入到系统里面,找到在桌面上出现的wmware tools的光盘。点击进入其中。vmware tools虚拟光盘里面,双击【VMwareTools-****.tar.gz】这个文件。复制这个【VMwareTools-****.tar.gz】文件,到【文件】—>【home】(主文件夹)文件夹里面。然后按【Ctrl+Alt+T】
2021-09-17 17:53:01 10673
原创 error: unreachable statement
error: unreachable statement(不可达语句)该错误原因正如其名,编译器永远也不会执行它下面的几种情况会出现 unreachable statement:(1)在reutrn语句后写语句。(2)在throw语句后写语句。(3)break、continue语句之后定义语句。(4)“\u10100”//合法,相当于‘\u1010’和字符串“0”。(5)移位运算符可以用于long int char short byte。(6)类的访问控制符可以是public或什么都不加。
2021-08-22 19:27:41 2833 1
原创 java.lang.arrayindexoutofboundsexception: Index 13 out of bounds for length 13
java.lang.arrayindexoutofboundsexception: Index 13 out of bounds for length 13(数组越界)当你使用不合法的索引访问数组时会报数组越界这种错误,数组arr的合法错误范围是[0, arr.length-1];当你访问这之外的索引时会报这个错。例如:while(n>0&&n<length){ if(num>nums[n]){ if(num<nums[n+1]){
2021-08-22 00:41:14 6860
原创 报错:char cannot be dereferenced
#报错:char cannot be dereferenced##1.出错代码while(s.charAt(i).equals(" ")){ i++; }s是字符串##错误原因java: 无法取消引用charchar是基本数据类型,已经是值了,这里比较值可以直接用==。##解决方法但是我们这里比较是否是空格不能直接用==符号所以这边把charAt()换成substring()substring()返回的也是字符串,所以可以使用equals()
2021-08-19 11:24:34 2531
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人