培训首页  >  JAVA新闻  >  Java常见排序算法 沈阳java培训班开课啦
沈阳Java零基础培训班4月火爆招生

Java常见排序算法 沈阳java培训班开课啦

来源:

沈阳市和平区爱尚职业培训机构

    发表于:2022-07-01 15:28:50   2次浏览
相关标签: JAVA培训   沈阳JAVA培训

Java常见排序算法

目录

1、归并排序

2、堆排序

3、基数排序

4、冒泡排序

5、希尔排序

6、排序

7、插入排序

8、选择排序

一、归并排序

1、基本思想

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各"修补"在一起,即分而治之)。

2、代码实现

二、堆排序

1、基本思想

堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的坏,好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。

堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。

2、堆排序基本思想及步骤

堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。

3、代码实现

三、基数排序

1、排序原理

基数排序不需要进行元素的比较与交换。如果你有一些算法的功底,或者丰富的项目经验,我想你可能已经想到了这可能类似于一些“打表”或是哈希的做法。而计数排序则是打表或是哈希思想简单的实现。

2、算法优化

在算法的原理中,我们是以一张二维数组的表来存储这些无序的元素。使用二维数组有一个很明显的不足就是二维数组太过稀疏。数组的利用率为10%。

在寻求优化的路上,我们想到一种可以压缩空间的方法,且时间复杂度并没有偏离得太厉害。那就是设计了两个辅助数组,一个是 count[],一个是 bucket[]。count 用于记录在某个桶中的最后一个元素的下标,然后再把原数组中的元素计算一下它应该属于哪个“桶”,并修改相应位置的 count 值。直到大数的高位也被添加到桶中,或者说,当所有的元素都被被在第 0 个桶中,基数排序就结束了。

3、代码实现

四、冒泡排序

1、排序原理

大家一定都喝过汽水吧,汽水中常常有许多小小的气泡,往上飘,这是因为组成小气泡的二氧化碳比水要轻,所以小气泡才会一点一点的向上浮。而冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以向小气泡一样,根据自身大小,一点一点向着数组的一侧移动。

2、代码实现

五、希尔排序

1、基本思想

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

2、代码实现

六、排序

1、排序原理

用数组的个数作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边,这个过程称为一趟排序。值得注意的是,排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。

2、代码实现

七、插入排序

1、实现思路

(1)从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果符合条件(比前面的大或者小,自定义),则让他们交换位置。
(2)然后再用第三个数和第二个比较,符合则交换,但是此处还得继续往前比较,比如有5个数8,15,20,45,17,17比45小,需要交换,但是17也比20小,也要交换,当不需要和15交换以后,说明也不需要和15前面的数据比较了,肯定不需要交换,因为前面的数据都是有序的。
(3)重复步骤二,一直到数据全都排完。

2、代码实现

八、选择排序

1、算法思想

从头至尾扫描序列,找出小的一个元素,和个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。

2、代码实现

沈阳爱尚实训开设JAVA,前端,UED,Python、大数据、新媒体等课程。5-10人小班教学,90天全程面授、课程每年同步名企需求、大厂项目案例、双五导师(5年以上名企+培训经验)授课、全流程团队开发、闯关式教育、双平台(OTO)巩固学习、就业薪水高,毕业一周内名企录取通知任您选、一次交费学会为止、老学员训练营助力职场技能提升、终身跳槽服务,详情可查看“沈阳爱尚实训”。


文中图片素材来源网络,如有侵权请联系删除
  • Adobe认证
  • Oracle认证
  • 思科认证
  • 微软认证
  • Linux认证
  • 其他
  • 职业技能提升
  • 考证找工作
  • 兴趣爱好
  • 周末班
  • 全日制白班
  • 随到随学

热门课程

  • 沈阳Java开发培训基础班

    询价

  • Java全栈工程师培训

    询价

  • java工程师培训零基础入门

    询价

  • 沈阳java零基础就业班

    询价

  • 沈阳IT零基础程序员就业班

    询价