java语言算法描述_六大java语言经典算法
在程序员们进行编程的时候,对各种数据的处理是少不了的,java语言算法在这个时候就十分重要了。数据算法有很多种,也并不区分哪种计算机语言使用,但是有程序员们常用的java语言经典算法,下面就简单介绍一下六大经典java语言算法。
一、冒泡排序(Bubble Sort)
1、基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。
2、算法描述:
(1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;
(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
(3)针对所有的元素重复以上的步骤,除了最后一个;
(4)重复步骤1~3,直到排序完成。
3、代码实现:
二、选择排序(Selection Sort)
1、基本思想:选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
2、算法描述:(n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。)
(1)初始状态:无序区为R[1..n],有序区为空;
(2)第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录
R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
(3)n-1趟结束,数组有序化了。
3、代码实现:
三、插入排序(Insertion Sort)
1、基本思想:在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数插到前面的有序数列中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
2、算法描述:
(1)从第一个元素开始,该元素可以认为已经被排序;
(2)取出下一个元素,在已经排序的元素序列中从后向前扫描;
(3)如果该元素(已排序)大于新元素,将该元素移到下一位置;
(4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
(5)将新元素插入到该位置后;
(6)重复步骤2~5。
3、代码实现:
四、希尔排序(Shell Sort)
1、基本思想:希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。
2、算法描述:
(1)选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;
(2)按增量序列个数k,对序列进行k 趟排序;
(3)每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1
时,整个序列作为一个表来处理,表长度即为整个序列的长度。
3、代码实现:
五、归并排序(Merge Sort)
1、基本思想:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and
Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。
2、算法描述:
(1)把长度为n的输入序列分成两个长度为n/2的子序列;
(2)对这两个子序列分别采用归并排序;
(3)将两个排序好的子序列合并成一个最终的排序序列。
3、代码实现:
六、快速排序(Quick Sort)
1、基本思想(分治):
通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
2、算法描述:快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:
(1)从数列中挑出一个元素,称为“基准”(pivot);
(2)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
(3)递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
3、代码实现:
上面这六种java经典算法是大家学习java必须要掌握的,也是新手朋友们在java零基础教程中会学到的内容。希望通过这篇文章对六种java语言经典算法的介绍,可以帮助到大家,尤其是对新手朋友能够有所帮助,对常用的java算法有一定的认识和了解。
java语言算法描述_六大java语言经典算法相关推荐
- java计算器算法描述_基于Java的计算器算法(源代码)
资源描述: import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.a ...
- 关于java构造方法的描述_在JAVA语言中,下面关于构造函数描述正确的是()
案例分析一:假定CPU的主频是500MHz.硬盘采用DMA方式进行数据传送,其数据传输率为4MB/s, 每次DMA传输的数据量为8KB, 要求没有任何数据传输被错过. 如果CPU在DMA初始化设置和启 ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- 经典c语言程序设计算法,C语言程序设计和循环结构相关的经典算法之一.ppt
C语言程序设计和循环结构相关的经典算法之一 第七讲 循环结构的经典算法之一 程序设计举例 ;教 学目 的 :1.灵活运用循环语句 2.编写一些基本算法程序 教学重点和难点:重点:判断素数,求最大公约数 ...
- 图片拼接镶嵌算法(image spline and mosaics经典算法)实现过程和效果展示
图片拼接镶嵌算法(image spline and mosaics经典算法)实现过程和效果展示 2010-01-01 14:56 图片拼接镶嵌(image spline and mosaics)应用很 ...
- java开发区块链_使用Java语言从零开始创建区块链
目前网络上关于区块链入门.科普的文章不少,本文就不再赘述区块链的基本概念了,如果对区块链不是很了解的话,可以看一下我之前收集的一些入门学习资源: 对区块链技术感到新奇的我们,都想知道区块链在代码上是怎 ...
- java语言 编译原理_【Java学习】深入分析Java的编译原理
在<Java代码的编译与反编译>中,有过关于Java语言的编译和反编译的介绍.我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件.这是我们通常 ...
- java语言就业方向_学习java以后的就业方向有哪些-百度经验
什么是java: Java是一种简单的,面向对象的,分布式的,说明型的,健壮安全的,结构中立的,可移植的,性能优异.多线程的动态语言.Java分为三个体系JavaSE(Java2 Platform S ...
- 关于java是最好的语言的段子_疯狂java——第一章 java语言概述与开发环境
J2ME: 主要用于控制移动设备和信息家电等有限存储的设备. J2SE: 整个java技术的核心和基础,它是J2ME和J2EE编程的基础. J2EE: Java技术中应用最广泛的部分,J2EE提供了企 ...
最新文章
- java实现七日股票问题_七日打卡--JAVA资源限制
- python自动点赞_用Python模拟技巧带你实现自动抽屉登录自动点赞
- 释放skb buffer指针引出的指针传递问题
- json spr路驾驶技术视频api_每天弄个小爬取之Python爬取批量爬取B站小视频
- 旅行报告:JavaOne 2013 –重归荣耀
- key value vue 输出_Vue2.0 v-for 中 :key 到底有什么用?
- 为什么要从自然数扩大到实数,进而扩大到复数?
- POJ 3253-Fence Repair(堆)
- 《电路分析导论(原书第12版)》一3.14 压控电阻
- setuna软件安装_401.5KB的电脑窗口截取软件,是否超实用?你说了算
- 美洽在线客服系统使用指南
- python批量新建文件夹_python批量创建文件夹
- java8 匿名内部类的前生今世
- 应用程序正常初始化(0xc0000034)失败
- 程序员月薪8000,丢人吗?
- vue 引入萤石视频
- 以电影之眼看CSS3动画(一)
- Javascript 对象不支持此属性或方法,Object doesn’t support this property or method
- 量化投资学习-10:追涨杀跌的本质是“高买低卖”,这是散户亏钱的背后的操作逻辑
- 相见恨晚系列--奇点临近