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,所有的元素在一个分组中,即完成了排序

  • 相关阅读:
    木块问题(The Blocks Problem,Uva 101)
    知识点
    大理石在哪儿(Where is the Marble?,Uva 10474)
    C++结构体
    踪电子表格中的单元格(Spreadsheet Tracking, ACM/ICPC World Finals 1997, UVa512)
    救济金发放(The Dole Queue, UVa 133)
    指针问题
    刽子手游戏(Hangman Judge, UVa 489)
    【poj3278】Catch That Cow
    【CodeVS1226】倒水问题
  • 原文地址:https://www.cnblogs.com/javadongx/p/paixusuanfa.html
Copyright © 2011-2022 走看看