八大排序类型(详解)

您所在的位置:网站首页 各种排序的java实现方法有哪些 八大排序类型(详解)

八大排序类型(详解)

2024-07-15 14:37| 来源: 网络整理| 查看: 265

文章目录 一、排序基本概念1、什么是排序?2、内部排序和外部排序3、稳定排序4、排序类型5、排序效率 二、交换排序1、冒泡排序2、快速排序 三、选择排序四、插入排序五、各种排序比较

一、排序基本概念 1、什么是排序?

排序就是将一个任意序列的一组数据,按某个关键字,重新排列为有序的序列。

2、内部排序和外部排序

内部排序:内部排序就是整个排序过程在内存储器中进行。

外部排序:简单来说,就是数据量太大。内存储器容量装不下,需要借助外部设备,这类排序就是外部排序。

3、稳定排序

稳定排序:如果在某个序列中存在多个具有相同关键字的元素。

在排序之后,他们的相对位置没有发生改变。相对位置就是:排序前在前面的依然在前面,在后面的依然在后面。

非稳定排序:与稳定排序的差别就在于具有相同关键字的元素,在排序后他们的相对位置是否发生改变。为稳定排序,相对位置是发生了改变的。

举例:

​ 排序前:{1,2,3,4,7,3,7}

排序后:{1,2,3,3,4,7,7},这就是稳定排序,相对位置没有发生改变。

排序后:{1,2,2,3,3,4,7,7},这就是非稳定排序,相对位置发生改变。

4、排序类型

排序一般是八大排序类型,一下是七种,还有一种是插入排序中的折半插入排序。

在这里插入图片描述

5、排序效率

在这里插入图片描述

时间复杂度最高的是三种基本排序,建议优先掌握:直接排序,简单选择,冒泡排序。 还有一个快速排序也需要掌握,面试经常会问。

二、交换排序 1、冒泡排序

冒泡排序算法的原理如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 public static void bubbleSort(int []arr) { for(int i=0;i= x ){ j--; } if (i < j) { arr[i] = arr[j]; } // 左边的指针右移,找到大于基准数的元素 while (i < j && arr[i] arr[j]) { min = j; } } if (min != i) { int tmp = arr[min]; arr[min] = arr[i]; arr[i] = tmp; } } } 四、插入排序

插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。

在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。

public class Insertion { public static void sort(Comparable[] a) { //将a[]按升序排列 int N=a.length; for (int i=0; i0 && Comparable(a[j], a[j-1])


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3