在Java的学习中,无疑要掌握变量、数组等基本的知识,所以一些算法也是必须要掌握的,今天是千锋JavaEE培训老师将为大家带来的是java常用的排序算法,有需要的朋友可以参考一下。
java常用的七个排序算法
1.选择排序算法
使用选择排序的基本思想是遍历数组的过程中,它是以i代表当前需要排序的序号,则需要在剩余的[i…n-1]中找出其中的一个** 小值,然后将找到的**小值与i指向的值进行交换。我们知道因为每一趟确定元素的过程中都会有一个选择** 大值的子流程, 因此也是可以形象的称它为选择排序。
2.冒泡排序算法
冒泡排序它的意思就是将比较大的数字在**下面,而较小的数字是浮在上面的一个意思。
3.**排序算法
通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,已达到整个序列有序的目的,本质就是,找一个基位。
4.合并排序算法
合并排序采用的是递归来实现,因此是属于“分而治之”,它可以是将目标数组从中间一分为二,然后是分别对这两个数组进行排序,当排序完毕之后再将排好序的两个数组“归并”到一起,合并排序实际上**的是合并的一个过程,在合并的过程中,则是需要额外的跟需要归并的两个数组长度一致的空间,这一点我们是需要理解清楚的。
5.插入排序算法
实际上插入排序的思想也是在遍历数组的思想上的,我们假设在序号i之前的元素即[0..i-1]都已经排好序,则是需要找到i对应的元素x的正确位置k,并且在寻找这个位置k的过程中逐个将比较过的元素往后移一位,为元素x“腾位置”,** 后将k对应的元素值赋为x,那么在一般情况下,插入排序的时间复杂度和空间复杂度分别为O(n2)和O(1),注意它和选择排序的方法有那么一点的区别。
6.希尔排序算法
所谓的希尔排序的诞生是由于插入排序在处理大规模数组的时候会遇到需要移动太多元素的问题。使用希尔排序的思想实际上是将一个大的数组“分而治之”,划分为若干个小的数组,以gap来划分, 希尔排序它是插入排序的改进版,在数据量大的时候对效率的提升帮助很大,当如果是数据量比较小的时候,那么建议直接使用插入排序就可以了。
7.**后来看看堆排序算法
堆排本质上就是先构造一个大顶堆,parent比children大,root的节点就是** 大的节点把** 大的节点(root)与尾节点(** 后一个节点,比较小)位置互换,然后剩下** 后的尾节点,现在** 大,其余的,从第 一个元素开始到尾节点前一位,从而使构造大顶堆递归。
以上是排序常用的方法,这几种方式都有它一定的特点,java中常用的七大排序算法是比较重要的一个基础知识点,在这个阶段中如果学好了,则在正则表达式之类的学习将会更加有利。
千锋教育:http://www.mobiletrain.org/
千锋西安校区:http://xa.mobiletrain.org/
西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
培训咨询专线:029-85260160
咨 询 QQ : 1660794050
面授课程:全栈HTML5+培训、全链路设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+Python运维培训、全栈软件测试培训、Android培训、iOS培训