zoukankan      html  css  js  c++  java
  • java常见排序算法

    快速排序

    选取一个初始值(一般是第一个),将排序分为小于初始值和大于初始值的两部分,然后重复此操作,直到排序完成。

    空间复杂度最坏为O(n),平均为O(log2n)

    时间复杂度最坏为O(n2),最好为O(nlog2n),平均(nlog2n)

    冒泡排序

    设待排序的序列长度为n,从前往后两两比较相邻元素的值,根据升序或降序交换两两元素的位置,直到整个序列比较完成,称为一趟冒泡排序,执行完n-1趟冒泡即可将所有元素排好。

    空间复杂度为O(1)

    时间复杂度最坏为O(n2),最好为O(n),平均为O(n2)

    直接插入排序

    将元素分为有序区[0...i-1]和无序区[i..n-1]将R[i]插入到[0..i-1]中,并且使插入后的区域有序。当一个元素序列越接近有序,性能越好。是稳定的算法。

    空间复杂度为O(1)

    时间复杂度最坏为O(n2),最好为O(n),平均为O(n2)

    折半插入排序

    思想与直接插入排序相同,区别在于折半插入排序在将元素插入到有序区时,使用的二分查找,可以减少关键字的比较次数。是一个稳定算法

    空间复杂度为O(1)

    时间复杂度平均为O(n2)

    希尔排序

    将待排序元素按照下标进行增量分组,对每一组的元素采用直接插入排序,随着增量逐渐减少,所分成的组所含的元素越来越多,直到增量变成了1,所有的元素在一个分组中,即完成了排序

  • 相关阅读:
    DG查看恢复进度
    dataguard主备延迟多长时间的查询方法
    DG动态性能视图详解
    Django之ORM的增删改查操作流程
    IPython
    render函数和redirect函数的区别+反向解析
    http状态码
    图的基本概念
    图的遍历
    vue之webpack打包工具的使用
  • 原文地址:https://www.cnblogs.com/javadongx/p/paixusuanfa.html
Copyright © 2011-2022 走看看