美文网首页
常用的排序算法的和查找算法小结

常用的排序算法的和查找算法小结

作者: 枫叶忆 | 来源:发表于2019-05-20 11:12 被阅读0次

常用的排序算法的时间复杂度和空间复杂度

排序法最差时间分析    平均时间复杂度    稳定度    空间复杂度

冒泡排序    O(n2)    O(n2)    稳定        O(1)

插入排序    O(n2)    O(n2)    稳定    O(1)

选择排序    O(n2)    O(n2)    稳定    O(1)

二叉树排序    O(n2    )O(n*log2n)    不一定    O(n)

快速排序    O(n2)    O(n*log2n)    不稳定        O(log2n)~O(n)

堆排序    O(n*log2n)    O(n*log2n)    不稳定        O(1)

希尔排序    O        O    不稳定    O(1)


查找算法时间复杂度

查找算法实现:顺序查找 二分查找 二叉树排序查找 哈希表法(散列表) 分块查找

冒泡排序

          冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说排序完成。规模比较小的时候应用冒泡排序,主要应用于教学。。。

选择排序--只会移动N次

         选择排序的主要思想:首先找到数组中最小的那个元素,其次,将它和第一个元素交换。接下来找第二小和第二个交换。运行时间和输入无关,数据移动最少。当数据量较小的时候适用。

插入排序

时间复杂度为O(n^2),数据量小时使用。并且大部分已经被排序。

快速排序

       快速排序是最快的通用排序算法,在大多数实际情况中,快速排序是最佳选择。在java的默认排序中是使用的是三向切分排序。

归并排序

      如果需要稳定,空间不是很重要,请选择归并。

O(n)时间复杂度的桶排序

     当范围已经知道,而且空间不是很重要的情况下使用桶排序。

总结排序

(1)若n较小(如n≤50),可采用直接插入或直接选择排序。

     当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。

(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;

(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。

     快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

     堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。

     若要求排序稳定,则可选用归并排序。但本章介绍的从单个记录起进行两两归并的  排序算法并不值得提倡,通常可以将它和直接插入排序结合在一起使用。先利用直接插入排序求得较长的有序子文件,然后再两两归并之。因为直接插入排序是稳定 的,所以改进后的归并排序仍是稳定的。

---------------------


相关文章

  • 常用的排序算法的和查找算法小结

    常用的排序算法的时间复杂度和空间复杂度 排序法最差时间分析平均时间复杂度稳定度空间复杂度 冒泡排序O(n2)O(n...

  • 排序算法的基本操作:两两交换数组中元素

    查找 vs 排序 比较查找与排序算法 说起来查找算法和排序算法从功能到使用目的都大有不同,但其实我们将要学习的(比...

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • ios常用算法大全

    ios常用算法大全 通用算法 (排序 查找 递归 链表等)欢迎大家来维护算法大全,有什么好的算法写的伪代码能运行测...

  • java排序和查找算法

    一、排序算法 二、查找算法

  • 无序数组求中位数的方法

    前言 数组的主要操作包括查找和排序,排序最常用的算法有冒泡排序、选择排序、选择排序、插入排序、堆排序、合并排序。排...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

  • 基础算法(查找 , 排序)

    算法分析 渐进符号 - (O , Ω , θ) 查找算法 二分查找 - O(logn) 排序算法 直接插入排序 -...

  • 数据结构+算法

    排序算法 基本排序:冒泡、选择、插入 高级排序希尔、归并、快速 检索算法 顺序查找、二分查找 高级算法 动态规划斐...

网友评论

      本文标题:常用的排序算法的和查找算法小结

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