| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 排序(Sort)知识点归纳 -> 正文阅读 |
|
[数据结构与算法]排序(Sort)知识点归纳 |
目录 1.基本概念按给定的关键字递增/递减的次序排列 两种基本操作:
三种待排序存储方式
2.插入排序直接插入排序1.时间复杂度最好情况就是全部有序,此时只需遍历一次,最好的时间复杂度为O ( n )? 综上,因此直接插入排序的平均时间复杂度为 O(n^2) 2.空间复杂度辅助空间是常量 3.算法稳定性相同元素的前后顺序是否改变 直接插入排序是稳定的 ?希尔排序希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止 注意:最后一个增量必须是1 !!! 3.交换排序冒泡排序(Bubble Sort)原理:每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。 而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。
时间复杂度:时间复杂度为 O(n^2) 快速排序:算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。执行如下操作: 从数列中挑出一个元素,称为 “基准”(pivot); 平均时间复杂度O(nlog n)缺点:不稳定4.选择排序直接选择排序【概述】直接选择排序又称简单选择排序,是一种不稳定的排序方法,其是选择排序中最简单一种,其基本思想是:第 i 趟排序再待排序序列 a[i]~a[n] 中选取关键码最小的记录,并和第 i 个记录交换作为有序序列的第 i 个记录。 其实现利用双重循环,外层 i 控制当前序列最小值存放的数组元素位置,内层循环 j 控制从 i+1 到 n 序列中选择最小的元素所在位置 k 【排序过程】1.排序过程 将整个记录序列划分为有序区和无序区,初始时有序区为空,无序区含有待排序的所有记录 ?第一趟排序后:0,『5,2,6,9,3,1,4,8,7』 ?第二趟排序后:0,1,『2,6,9,3,5,4,8,7』 ?第三趟排序后:0,1,2,『6,9,3,5,4,8,7』 ?第四趟排序后:0,1,2,3,『9,6,5,4,8,7』 ?第五趟排序后:0,1,2,3,4,『6,5,9,8,7』 ?第六趟排序后:0,1,2,3,4,5,『6,9,8,7』 ?第七趟排序后:0,1,2,3,4,5,6,『9,8,7』 ?第八趟排序后:0,1,2,3,4,5,6,7,『8,9』 ?第九趟排序后:0,1,2,3,4,5,6,7,8,『9』 ?结果: ? ? ? ? ?『 0,1,2,3,4,5,6,7,8,9 』 堆排序堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆 算法描述将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区; 5.归并排序6.分配排序箱排序:箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分配),然后按序号依次将各非空的箱子首尾连接起来(收集)。 适用于: 关键字取值范围小 基数排序:取多次关键字排序利用分配和收集两种基本操作。基数排序是一种按记录关键字的各位值逐步进行排序的方法。此种排序一般适用于记录的关键字为整数类型的情况。所有对于字符串和文字排序不适合。 7.内部排序方法比较? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:35:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |