很多朋友在学习java语言的时候搞不清楚各种算法是怎么回事,更不知道该怎么应用,今天小编整理了一下Java语言的7个算法供大家参考。
java常用的七个排序算法
1、冒泡排序算法
冒泡排序它的意思就是将比较大的数字在最下面,而较小的数字是浮在上面的一个意思。
2、选择排序算法
使用选择排序的基本思想是遍历数组的过程中,它是以i代表当前需要排序的序号,则需要在剩余的[i…n-1]中找出其中的一个最 小值,然后将找到的最小值与i指向的值进行交换。我们知道因为每一趟确定元素的过程中都会有一个选择最 大值的子流程, 因此也是可以形象的称它为选择排序。
3、合并排序算法
合并排序采用的是递归来实现,因此是属于“分而治之”,它可以是将目标数组从中间一分为二,然后是分别对这两个数组进行排序,当排序完毕之后再将排好序的两个数组“归并”到一起,合并排序实际上最重要的是合并的一个过程,在合并的过程中,则是需要额外的跟需要归并的两个数组长度一致的空间,这一点我们是需要理解清楚的。
4、插入排序算法
实际上插入排序的思想也是在遍历数组的思想上的,我们假设在序号i之前的元素即[0..i-1]都已经排好序,则是需要找到i对应的元素x的正确位置k,并且在寻找这个位置k的过程中逐个将比较过的元素往后移一位,为元素x“腾位置”,最 后将k对应的元素值赋为x,那么在一般情况下,插入排序的时间复杂度和空间复杂度分别为O(n2)和O(1),注意它和选择排序的方法有那么一点的区别。
5、快速排序算法
通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,已达到整个序列有序的目的,本质就是,找一个基位。
6、希尔排序算法
所谓的希尔排序的诞生是由于插入排序在处理大规模数组的时候会遇到需要移动太多元素的问题。使用希尔排序的思想实际上是将一个大的数组“分而治之”,划分为若干个小的数组,以gap来划分, 希尔排序它是插入排序的改进版,在数据量大的时候对效率的提升帮助很大,当如果是数据量比较小的时候,那么建议直接使用插入排序就可以了。
7、堆排序算法
堆排本质上就是先构造一个大顶堆,parent比children大,root的节点就是最 大的节点把最 大的节点(root)与尾节点(最 后一个节点,比较小)位置互换,然后剩下最 后的尾节点,现在最 大,其余的,从第 一个元素开始到尾节点前一位,从而使构造大顶堆递归。
以上是7中比较常用的算法,当然这些算法各有千秋,还需在实际操作中根据情况来选择。更多线上视频教程http://pan.baidu.com/s/1c26JSDq
本文暂时没有评论,来添加一个吧(●'◡'●)