IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构 --- 排序算法 -> 正文阅读

[数据结构与算法]数据结构 --- 排序算法

1.冒泡排序

?

? ? ? ? 第 i 个数与第 i+1 个数比较,若 i>i+1 则交换两者位置,否则接着比较 i+1 与 i+2大小,循环此过程。

2.选择排序

? ? ? ? 找出序列中除第一个数以外最小的数,将该数与第一个数作比较,若该数小于第一个数,则交换位置,然后比较第二个数和其他数中最小数的大小。循环此过程。

3.插入排序

? ? ? ? 对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。

4.希尔排序

? ? ? ? 插入排序的一种。将待排序序列分为多个组,分组公式为n/2,n为序列个数。然后再对每个组进行插入排序。重复此过程。第二次分组为 (n/2)/2。

5.快速排序

? ? ? ? (1) 在序列中选取一个数字为基准数取出,通常选取序列中第一个数。(序列空出第一个位置)

? ? ? ? (2) 然后定义L下标和R下标。先将基准数与R下标指向位置的数作比较。R下标指向的数字小于基准数时,将R下标指向的数字移动到序列空出的第一个位置(基准数之前所在的位置),然后比较L下标指向的数与基准数的大小。若之前R下标指向的数字大于基准数,则将R下标向左移动一个位置,继续与基准数作比较。

? ? ? ? (3) 直至基准数和序列所有元素比较完大小(L下标与R下标相遇时),将基准数放入L下标与R下标相遇的位置中。

? ? ? ? (4) 然后将基准数两边的序列重复(1)(2)操作,直至将序列排为有序序列。

6.归并排序

? ? ? ? (1) 将序列两两分为一组,然后将每组数据进行从小到大排序。

? ? ? ? (2) 然后将(1)中排序完成的组再进行两两分组,将每组数据机型从小到大排序。

? ? ? ? (3) 直至所有组合并为一整个序列

7.堆排序

? ? ? ? 从大到小排序:

? ? ? ? (1) 将一个堆转换成大顶堆,然后将堆顶元素取出。

? ? ? ? (2) 将末尾节点移动至堆顶元素的位置,然后进行将该堆转换为大顶堆,再将堆顶元素取出,重复此过程。

8.计数排序,计数排序是一种基于?统计?的排序算法

? ? ? ? 将序列中的数出现几次进行计数,然后将其取出进行排序。

9.桶排序

? ? ? ? 将序列按数字的第一位放入桶中,然后将桶中的序列用其他排序算法进行排序,然后依次取出桶中数据。

10.基数排序

? ? ? ? 桶排序的扩展。

? ? ? ? (1) 按个位分配到桶中,然后依次取出,在一个桶中的数字遵循先进先出原则。

? ? ? ? (2) 按十位分配

????????(3) 按百位分配

11. 排序算法的时间、空间复杂度

时间复杂度空间复杂度是否稳定排序方式
最好最坏平均
冒泡排序O(n)O(n2)O(n2)O(1)稳定in-place
选择排序O(n2)O(n2)O(n2)O(1)不稳定in-place
插入排序O(n)O(n2)O(n2)O(1)稳定in-place
希尔排序O(nlog2n)O(nlog2n)O(nlogn)O(1)不稳定in-place
快速排序O(nlogn)O(n2)O(nlogn)O(logn)不稳定in-place
归并排序O(nlogn)O(nlogn)O(nlogn)O(n)稳定out-place
堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不稳定in-place
计数排序O(n+k)O(n+k)O(n+k)O(k)稳定out-place
桶排序O(n+k)O(n2)O(n+k)O(n+k)不稳定out-place
基数排序O(n×k)O(n×k)O(n×k)O(n+k)稳定out-place

  • 堆排序的时间复杂度是(O(n*log(n))),堆排序中建堆过程的时间复杂度是(O(n))
  • in-place占用常数字内存,不占用额外内存
  • out-place占用额外内存

12. 已知一颗二叉树的前序遍历顺序和后序遍历顺序不能唯一确定这棵二叉树,确定一颗二叉树必须知道这一颗二叉树的中序遍历

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:59:48  更:2022-10-17 13:00:31 
 
开发: 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 19:41:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码