java语言算法描述_六大java语言经典算法[通俗易懂]

java语言算法描述_六大java语言经典算法[通俗易懂]在程序员们进行编程的时候,对各种数据的处理是少不了的,java语言算法在这个时候就十分重要了。数据算法有很多种,也并不区分哪种计算机语言使用,但是有程序员们常用的java语言经典算法,下面就简单介绍一下六大经典java语言算法。一、冒泡排序(BubbleSort)1、基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。2、算法描述:(1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;…

大家好,又见面了,我是你们的朋友全栈君。

在程序员们进行编程的时候,对各种数据的处理是少不了的,java语言算法在这个时候就十分重要了。数据算法有很多种,也并不区分哪种计算机语言使用,但是有程序员们常用的java语言经典算法,下面就简单介绍一下六大经典java语言算法。

一、冒泡排序(Bubble Sort)

1、基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。

2、算法描述:

(1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;

(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

(3)针对所有的元素重复以上的步骤,除了最后一个;

(4)重复步骤1~3,直到排序完成。

3、代码实现:

5b6eca5fdb18046013f5810deaaed890.png

二、选择排序(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、代码实现:

fbfdaea09b4fdcc38585f1c52bfb327b.png

三、插入排序(Insertion Sort)

1、基本思想:在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数插到前面的有序数列中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

2、算法描述:

(1)从第一个元素开始,该元素可以认为已经被排序;

(2)取出下一个元素,在已经排序的元素序列中从后向前扫描;

(3)如果该元素(已排序)大于新元素,将该元素移到下一位置;

(4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;

(5)将新元素插入到该位置后;

(6)重复步骤2~5。

3、代码实现:

363f4986dcfad82ab1f0fd9c2b4357e1.png

四、希尔排序(Shell Sort)

1、基本思想:希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。

2、算法描述:

(1)选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;

(2)按增量序列个数k,对序列进行k 趟排序;

(3)每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1

时,整个序列作为一个表来处理,表长度即为整个序列的长度。

3、代码实现:

72d98edc2795d7cafaed7ec464707988.png

五、归并排序(Merge Sort)

1、基本思想:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and

Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。

2、算法描述:

(1)把长度为n的输入序列分成两个长度为n/2的子序列;

(2)对这两个子序列分别采用归并排序;

(3)将两个排序好的子序列合并成一个最终的排序序列。

3、代码实现:

2aa61dfe171e2879a14daeed0acfffda.png

03eba1d0082f15ee487d37b9d806c0f4.png

六、快速排序(Quick Sort)

1、基本思想(分治):

通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

2、算法描述:快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:

(1)从数列中挑出一个元素,称为“基准”(pivot);

(2)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

(3)递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

3、代码实现:

425828d5bbd2e38e95cb8aae1a7f3422.png

92991a9404b8f13f2ff0adfdef7e6628.png

上面这六种java经典算法是大家学习java必须要掌握的,也是新手朋友们在java零基础教程中会学到的内容。希望通过这篇文章对六种java语言经典算法的介绍,可以帮助到大家,尤其是对新手朋友能够有所帮助,对常用的java算法有一定的认识和了解。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156693.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 操作系统期末总复习(题库)[通俗易懂]

    操作系统期末总复习(题库)[通俗易懂]问答题什么是操作系统,主要功能有哪些?操作系统:计算机最基本最重要的基础性系统软件,可以使计算机系统能协调、高效和可靠地进行工作主要功能:处理器管理、存储器管理、设备管理、文件管理、作业管理等功能模块什么是微内核技术,主要有哪些功能?微内核技术把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。主要功能:进程(线程)管理、低级存储器管理、中断和陷入处理等功能。简述进程的基本状态及状态之间的转换

  • Mac下利用Anaconda安装Opencv「建议收藏」

    Mac下利用Anaconda安装Opencv「建议收藏」打开Anaconda,选择Environments,打开需要安装环境的终端输入以下代码sudopipinstallopencv-python-ihttps://pypi.tuna.tsinghua.edu.cn/simple记住命令前加sudo,否则会报错填写密码后即可安装验证安装是否成功方法1importcv2没错报错就表明安装成功方法2condalist找到opencv库则表明安装成功!!Reference添加链接描述添加链接描述…

  • Latex中单引号,双引号「建议收藏」

    Latex中单引号,双引号「建议收藏」写论文时候,需要写出英文的单引号和双引号单引号就是”这个符号双引号的话,如果输入两个英文输入下的””,比如”paper”,LaTeX编译显示的话就是两个向下的引号。正确应该是第一个向上方向的引号用“这个符号,就是输入两个下图的键盘上的符号,所以正确应该为:“paper”…

  • 为什么谷歌插件添加显示程序包无效(谷歌浏览器怎么不能安装插件)

    今天在添加谷歌插件的时候,却发现谷歌浏览器显示程序包无效:”CRX_HEADER_INVALID”,现整理解决方法如下:1、把你需要添加谷歌插件的后缀名由.crx更改为.rar,更改时会弹出提示框,提示“如果改变文件扩展名,可能会导致文件不可用,确实要更改吗?”,点击“是(Y)”按钮即可2、解压你刚刚更改后缀名为.rar的谷歌插件压缩包(解压时,选择解压到你插件名的…

  • 2019-06-10 Java学习日记之JQuery

    2019-06-10 Java学习日记之JQuery

  • 超详细的MySQL8.0.20安装教程及其安装问题处理

    超详细的MySQL8.0.20安装教程及其安装问题处理文章目录:官网下载MySQL的安装包添加并配置my.ini文件配置系统变量并初始化MySQL安装并启动MySQLNavicat连接MySQL并修其密码安装过程中常见问题及其解决方法官网下载MySQL的安装包下载链接如下:MySQL8.0.20版本其他版本:MySQL8.0.16版本MySQL8.0.20版本压缩包解压后如下图所示:添加并配置my.ini文件在原解压根…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号