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

  • 相关阅读:
    优酷菜单
    下拉列表
    图片循环滑动
    android 官网处理图片 代码
    获取手机内存可用内存单个APP运行内存
    Android中View绘制流程以及invalidate()等相关方法分析
    Andriod中绘(画)图----Canvas的使用详解
    Android中获取应用程序(包)的信息----PackageManager
    android桌面小火箭升空动画
    3、自定义控件-----刮刮奖
  • 原文地址:https://www.cnblogs.com/javadongx/p/paixusuanfa.html
Copyright © 2011-2022 走看看