栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

《数据结构》学习笔记——排序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《数据结构》学习笔记——排序

数据结构——排序
  • 概述
  • 选择排序
    • 简单选择排序
    • 堆排序
  • 插入排序
    • 简单插入排序
    • 希尔排序
  • 交换排序
    • 冒泡排序
    • 快速排序
  • 时间复杂度下界
  • 归并排序
    • 递归算法
    • 非递归算法

概述

在计算机中,所谓排序就是将一组无序的记录序列调整为有序的记录序列。
一个排序算法是指一种能将一串记录序列按照某种特定的方式进行调整的一种方法。

选择排序 简单选择排序

简单选择排序(Simple Selection Sort)是一种直观的排序算法,其思想是在未排序的序列中选择最小的元素和序列的首位元素交换,接下来在剩下的未排序序列中再选出最小元素与序列的第二位元素交换,依次类推,最后形成从小到大的已排序序列。

堆排序

堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。

堆排序的核心思想是:
利用最大堆(或者最小堆)输出堆顶元素,即最大值(或最小值),将剩余元素重新生成最大堆(或者最小堆),继续输出堆顶元素,重复此过程,直到全部元素都已输出,得到的输出元素序列即为有序序列。

实现堆排序的一种简单的做法是额外开辟一个赋值的数组空间,将堆顶元素逐一放入辅助数组中,最后再把辅助数组的内容复制回原始的数组。 这种方法的额外空间复杂度是 O(N)。

插入排序 简单插入排序

简单的插入排序的核心思想:
将待排序的一组序列分为已排好的和未排序的两个部分;初始状态时,已排序序列仅包含第一个元素,未排序序列中的元素为除去第一个以外 N-1 个元素;此后将未排序序列中的元素逐一插入到已排序的序列中。如此往返,经过 N-1 次插入后,未排序序列中元素个数为0,则排序完成。

希尔排序

简单插入排序效率不高的一个重要原因是每次只交换相邻的两个元素,这样只能消去一对错位的元素。
希尔排序对插入排序进行改进,试图通过每次交换相隔一定距离的元素,达到排序效率上的提升。

希尔排序的基本原理是,将待排序的一组元素按一定间隔分为若干个序列,分别进行插入排序。
开始时设置的“间隔”较大,在每轮排序中将间隔逐步减小,直到“间隔”为1,也就是最后一步是进行简单插入排序。

希尔排序将“间隔”定义为一组增量序列,用来分割待排序列,即将位置之差等于当前增量的元素归属于同一个子序列,并分别进行插入排序;排好后再选取下一个增量,划分子序列再次排序,指定最后一个增量(一般为1)。



交换排序 冒泡排序

冒泡排序是最简单的交换排序。
对元素个数为 N 的待排序序列进行排序时,共进行 N-1 次循环。
在第k次循环中,对从第1到第N-k个元素从前往后进行比较,每次比较相邻的两个元素,若前一个元素大于后一个元素,则两者互换位置,否则保存位置不变。 这样一次循环下来,就把第k大的元素移动到第N-k个位置上,称为第k趟的冒泡。整个过程进行了N-1趟冒泡,直到第1个和第2个元素比较完成,最终剩余最小的元素,留在第1个位置上,排序结束。

快速排序

快速排序也是交换排序的一种,但和冒泡排序不同的是,冒泡排序只比较相邻两个记录的顺序,而快速排序的原理是:将未排序元素根据一个作为基准的“主元”(Pivot)分为两个子序列,其中一个子序列的距离均大于主元,而另一个子序列均小于主元,然后递归地对这两个子序列用类似的方法进行排序。
本质上,快速排序使用分治法,将问题的规模减小,然后再分别进行处理。

时间复杂度下界


归并排序

归并排序是建立在归并操作基础上的一种方法。
归并操作,是指将两个已排序的子序列合并成一个有序序列的过程。

归并排序的基本思想:
将大小为N的序列看成N个长度为1的子序列,接下来将相邻子序列两两进行归并操作,形成N/2(+1)个长度为2的有序子序列;然后再继续进行相邻子序列两两归并操作,如此一直循环,直到剩下1个长度为N的序列,则该序列为原序列完成排序后的结果。

递归算法



非递归算法

学习参考资料:

《数据结构》第2版
https://www.bilibili.com/video/BV1JW411i731?p=103
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号