Java数据结构与算法——排序(基础概念)

声明:码字不易,转载请注明出处,欢迎文章下方讨论交流。

前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督。在介绍各种排序算法以前,本篇先聊聊算法中的一些必备知识。java

0、排序算法索引(待更)

Java数据结构与算法——桶排序
Java数据结构与算法——快速排序算法

一、时间复杂度

算法的时间复杂度是一个函数,其定量的描述了一个算法运行时间和输入规模之间的关系。一般用O表示,且不包括这个函数的低阶和首项系数。若是一个算法的执行时间为2n^2+5n+4,那么该算法时间复杂度就能够表示为O(n^2)。segmentfault

通常的时间复杂度,由好到坏大概有这么几种O(1)、O(logn)、O(n)、O(nlogn)、O(n^k)(k>=2),通常状况下,当算法时间复杂度高于O(n^2)时,性能就变得至关差,此时就该想办法寻求更优的方案。数据结构


O(n^2)的情形

for(int i=0;i<n;i++){
        //code...
        for(int j=0;j<n;j++){
            //code...
        }
    }

O(nlogn)的情形

for(int i=0;i<n;i++){
        //code...
        for(int j=i;j<n;j++){
            //code...
        }
    }

O(logn)的情形

for(int i=0;i<n;i+=2){
        //code...
    }

O(1)的情形

//与n无关的有限次的表达式,例如赋值,简单的运算等

二、空间复杂度

空间复杂度是一个算法执行过程当中所消耗的临时空间的一个度量。同时间复杂度同样,也不包括这个度量函数的低阶项和首项系数。相对的应的,空间复杂度也有O(1)、O(logn)、O(n)、O(nlogn)、O(n^k)(k>=2)。函数

三、稳定性

在排序算法中,评估一个算法的优劣,除了时间复杂度和空间复杂度之外,还有一个衡量指标就是稳定性。在一个待排序的序列中,可能存在多个相等的项,通过排序后若是这些项的相对次序保持不变,则咱们说这个算法是稳定的,不然就是不稳定的。性能

研究稳定性的意义在于,若是算法是稳定的,那么第一个元素排序的结果能够被第二个等值的元素在排序时所用,也就是说能够避免多余的比较。code

四、总结

在介绍排序算法以前,本篇先对后面排序算法的基本概念说叨说叨,打下一个基础铺垫。排序

排序算法索引(待更)
Java数据结构与算法——桶排序
Java数据结构与算法——快速排序
码字不易,如对您有帮助,欢迎点赞收藏打赏^_^索引

相关文章
相关标签/搜索