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算法有一定的认识和了解。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android应用开发揭秘25

    Android应用开发揭秘25Android应用开发揭秘25

    2022年5月10日
    40
  • IIS Express ArgumentOutOfRangeException

    IIS Express ArgumentOutOfRangeException

    2022年3月6日
    40
  • day04 JavaScript高级程序设计 阅读总结

    day04 JavaScript高级程序设计 阅读总结《JavaScript高级程序设计》(第四版)阅读总结额,据说这本是前端er必看书籍,花了20个小时简单把这本书过了一下,目前暂时很少用到的东西我这一遍就没有过了,等以后要用的时候再回来继续学了。先来谈谈这本书的缺点,书籍前面章节用到了一些后面才讲到的东西,比如第三章讲symbol对象时,就用到了后面才讲的iterator和generator。然后就是感觉讲的有点太广了,而且基本没有课后习题,看过就是看过了,顶多自己花时间把书里面的例子都敲一遍。所以我建议应该和现代JavaScript教程一起食用。反

    2022年8月20日
    9
  • linux的通配符有哪些,Linux通配符「建议收藏」

    linux的通配符有哪些,Linux通配符「建议收藏」Linux通配符说明:通配符是bash的内置功能,几乎适用于所有Linux命令。*匹配任意(0个或多个)字符或字符串,包括空字符串。?匹配任意1个字符,有且只有一个字符。[abcd]匹配abcd中任何一个字符,abcd也可以是其他任意不连续字符。[a-z]匹配a到z之间的任意一个字符,字符前后要连续,也可以用连续数字,即[1-9]。[!abcd]表示不匹配括号里面的任何一个字符…

    2022年9月19日
    2
  • 查看项目安装的webpack版本

    查看项目安装的webpack版本如何查看项目的webpack版本解决方法:在package中”webpack”:”^3.6.0″,只知道项目使用的webpack的版本号大于3.6.0,所以执行以下命令即可看到项目正在使用的版本号命令可参考:http://www.yayihouse.com/yayishuwu/chapter/2731…

    2022年8月10日
    43
  • 手写数字识别数据集_卷积神经网络分类

    手写数字识别数据集_卷积神经网络分类基于卷积神经网络的手写数字识别(附数据集+代码)配置环境1.前言2.问题描述3.解决方案4.实现步骤4.1数据集选择4.2构建网络4.3训练网络4.4测试网络4.5图像预处理4.6传入网络进行计算5.代码实现5.1文件说明5.2使用方法5.3训练模型5.4配置环境使用环境:python3.8平台:Windows10IDE:PyCharm1.前言手写数字识别,作为机器视觉入门项目,无论是基于传统的OpenCV方法还是基于目前火热的深度学习、神经网络的方法都有这不错的训练效果。当然,这个项目也常常

    2022年9月14日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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