美文网首页
【Java】各类排序算法

【Java】各类排序算法

作者: 老九君 | 来源:发表于2019-08-09 10:31 被阅读0次

排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。内排序有可以分为以下几类:

(1) 插入排序:直接插入排序、二分法插入排序、希尔排序。

(2) 选择排序:简单选择排序、堆排序。

(3) 交换排序:冒泡排序、快速排序。

(4) 归并排序

(5) 基数排序

当然,所需要辅助空间最多的是:归并排序

所需要辅助空间最少的是:堆排序

平均速度最快的:肯定是快速排序啦

具有不稳定性的:快速排序,希尔排序,堆排序

接下来我们就针对几个常用且重要的排序方法进行简单的讲解:

一、插入排序

1、思路:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

2、实例:

3、Java实现

二、简单选择排序

1、思路:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;

然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

2、实例:

3、Java实现

三、希尔排序(最小增量排序)

1、思路:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。

2、实例:

3、Java实现

四、冒泡排序

1、思路:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

2、实例:

3、Java实现

老九学堂出品,转载请私信哦

对于文章内容有不理解的可以添加老九君个人QQ:614940318,请备注来自简书

老九学堂免费C、C++、Java课程地址:

https://study.163.com/courses-search?keyword=%E8%80%81%E4%B9%9D%E5%AD%A6%E5%A0%82

相关文章

  • 【Java】各类排序算法

    排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 基于比较的排序

    一、排序算法定义 本章介绍是基于比较的排序算法,这类排序算法的理论最优时间复杂度是O(NlogN)。 各类排序算法...

  • 排序算法(四) 希尔排序(插入排序的进化)

    参考Java排序算法(四):希尔排序常见排序算法 - 希尔排序 (Shell Sort) 希尔排序算法是按其设计者...

  • java 实现排序算法之「插入排序」

    java 实现排序算法系列 这是 Java 实现排序算法的第三篇文章——插入排序算法。插入排序可以说成是「一类」简...

  • 排序算法合集

    排序算法汇总 各类排序算法时间空间复杂度如下表所示: 1:直接选择排序: 排序思想: 选取当前最小(最大)的数据放...

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 一文搞定十大经典排序算法(Java实现)

    本文总结十大经典排序算法及变形,并提供Java实现。参考文章:十大经典排序算法总结(Java语言实现)快速排序算法...

网友评论

      本文标题:【Java】各类排序算法

      本文链接:https://www.haomeiwen.com/subject/vtscjctx.html