美文网首页
数据结构—排序

数据结构—排序

作者: 乳酸菌_c966 | 来源:发表于2019-04-10 18:00 被阅读0次

内部排序:指待排序记录全部存放在内存中排序的过程。
外部排序:指待排序记录的数量很大,以至于内存不能容纳全部记录,在排序过程中尚需对外存进行访问的过程。

插入排序

1.直接插入排序
先将序列中的第一个记录看成一个有序列,然后从第二个记录开始,逐个进行插入,直至整个序列有序,排序过程为n-1躺插入。

  • 时间效率:因为在最坏情况下,所有元素的比较次数总和为(0+1+...+n-1)—>O(n的平方),时间复杂度O(n的平方)。
  • 空间效率:仅占用1个缓冲单元—O(1)
  • 算法的稳定性:稳定
    2、希尔排序


示意图
选择排序

每一次从待排序的数据元素中选出最小的一个元素,存放在已排序列的后面,直到全部待排序的数据元素排完。

  • 优点:实现简单
  • 缺点:每趟只能确定一个元素,表长为n时需要n-1趟
  • 前提:顺序存储结构

1、直接选择排序
在所有记录中选出最小的记录,把它与第一个记录交换,然后在剩余的记录内选出最小的记录与第二个记录交换...依次类推。


示意图

2、堆排序


示意图

堆排序的最坏时间复杂度为O(n倍的log以2为底的n次方),堆排序平均性能接近最坏性能。
堆排序的辅助空间为O(1)。

交换排序

1、冒泡排序

  • 时间效率:O(n的平方)
  • 空间效率:O(1)
  • 稳定性:稳定

2、快速排序

  • 优点:因为每趟可以确定不止一个元素的位置,而且呈指数增加,所以特别
    示意图

快速排序最坏时间复杂度O(n的平方),最好时间复杂度为O(n倍的log以2为底的n次方)

归并排序

可以把一个长度为n的无序序列看成是n个长度为1的有序子序列,首先做两两归并,得到n/2个长度为2的有序子序列;再做两两归并,如此重复,直到最后得到一个长度为n的有序序列。

示意图

时间效率:O(nLog以2为底的n次方)
空间效率:O(n)
稳定性:稳定

算法复杂性比较

排序算法时间复杂度表

相关文章

  • 排序算法-堆排序

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

  • 2019-02-23 普林斯顿大学 数据结构课程笔记

    一、 数据结构:基本数据结构:栈、队列、背包、优先队列 排序:排序、归并排序、堆排序、基数排序 查找:二叉查找树、...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • 算法与数据结构(六):堆排序

    title: 算法与数据结构(六):堆排序tags: [算法与数据结构, C语言, 堆排序]date: 2019-...

  • Rust数据结构——排序算法(一)

    Rust数据结构——排序算法(一) 0x01 常见的排序算法 排序算法是数据结构中很常见的算法。如果你了解过数据结...

  • Python 算法大全

    这个库涵盖了多种算法和数据结构的介绍,比如: 排序算法(冒泡排序、希尔排序、插入排序、桶排序、合并排序、快速排序、...

  • C语言:关于数据的几种排序算法

    数据结构的排序算法有很多种。其中,快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法;基数排序、冒泡排序、...

  • java堆排序

    什么是堆排序:图解堆排序堆排序:利用了堆这种数据结构堆数据结构:特殊的完全二叉树,因为具有以下的特点:1)每个结点...

  • 021-数据结构与算法-排序

    基础方法或者数据结构的定义: 冒泡排序 选择排序 插入排序 希尔排序 希尔排序思想: 希尔排序是把记录按下标的一定...

  • 玩转算法面试:(三)LeetCode数组类问题

    数组中的问题其实最常见。 排序:选择排序;插入排序;归并排序;快速排序查找:二分查找法数据结构:栈;队列;堆…… ...

网友评论

      本文标题:数据结构—排序

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