zoukankan      html  css  js  c++  java
  • # 排序算法总结[1]

    排序算法总结[1]

    标签(逗号分隔): 排序、算法、Java


    计算机中最常见、最简单的算法就是排序和查找算法了,趁着找工作准备面试的机会再把这些算法总结一下,以后也方便查阅。

    排序算法分类

    根据待排序数据的大小,分为内部排序和外部排序。

    1. 如果整个排序过程在内存中即可完成不需要访问外部磁盘就,称为内部排序;
    2. 如果待排序序列太大,不能在内存中一次完成,称为外部排序;

    常见的排序算法

    • 内部排序:冒泡排序、插入排序、希尔排序、选择排序、堆排序、归并排序、快速排序等;
    • 外部排序:外归并排序、外分配排序、置换选择排序;

    线性排序算法

    上面介绍的都是基于比较的排序算法,最佳实践复杂度是:O(NlgN),而一些特殊条件下可以使用线性排序:基数排序、计数排序和桶排序达到O(N)的时间复杂度。

    排序算法的稳定性

    排序算法的稳定性是一个非常重要的概念,主要指的是原本相同的元素排序完成后其相对顺序会不会发生改变。
    比如:1,3,1,2,5其中2个1相对顺序不能改变这样才是稳定的。

    1.稳定性的意义

    如果排序算法是稳定的,那么就可以从一个键上排序,然后再从另外一个键上排序,第一个键上排序的结果可以被第二个键使用。基数排序就是这样,先按照低位排序,然后逐次高位排序,由于是稳定的,低位相同的元素在高位相同时其位置也不会发生改变的。

    2.常见排序算法的稳定性

    • 稳定的排序算法:冒泡、直接插入排序、归并排序、基数排序
    • 非稳定的排序算法:堆排序、快排、希尔排序、直接选择排序

    排序算法时间空间复杂度总结

  • 相关阅读:
    轻松搭建Redis缓存高可用集群
    Redis集群主从配置
    启动Redis Cluster
    MyISAM 和 InnoDB 索引的区别
    数据库面试
    如何定位php程序访问慢
    Socket技术详解
    NGINX快速入门
    nginx 并发数问题思考:worker_connections,worker_processes与 max clients
    php-fpm运行原理
  • 原文地址:https://www.cnblogs.com/lhyblog/p/sort_1.html
Copyright © 2011-2022 走看看