• 基于相邻元素交换的排序算法的下界


      逆序(inversion)是指序列中具有性质“i<j,但a[i]>a[j]“的序偶(a[i].a[j])。

      例如:在序列34,8,64,51,32,21中具有9个逆序:(34,8),(34,32),(34,21),(64,51),(64,32),(64,21),(51,32),(51,21),(32,21);

    显而易见的是,排序完成之后,序列中将不会存在逆序。因此我们可以通过计算序列中的逆序数来及算排序平均运行时间的精确的界。为了可以定义出“平均”,这里假设序列中不存在重复元素。利用这个假设,设输入数据是这个序列的某种可能的排列(只有相对顺序是重要的),并假设所有的排列都是等可能的。

      假设一个长度为n的序列中的所有序偶都是逆序(一个单调递减的序列),那么其逆序的个数就是序偶的个数n(n-1)/2=(1+2+3+...+n-1),因此平均表拥有该量的一半,即n(n-1)/4的逆序,,而基于相邻元素交换的排序算法每次相邻交换都只能消除一个逆序。因此算法需要n(n-1)/4=Ω(n^2)次交换。

      事实上,一般算法证明下界要比证明上界难得多。

      这个结论的意义在于:一个排序算法通过删除逆序得以向前运行,而为了突破Ω(n^2)这个下界,它必须要实现每次交换删除不止一个逆序。

                          

  • 相关阅读:
    mybatis generator插件开发
    webserver实现
    Linux的selinux
    oracle从备份归档日志的方法集中回收
    百度地图 Android SDK
    Oracle实践--PL/SQL表分区的基础
    js插件---jquery给表格添加行列
    m_Orchestrate learning system---三十四、使用重定义了$的插件的时候最容易出现的问题是什么
    2018十大国产佳片
    javascript对象使用总结
  • 原文地址:https://www.cnblogs.com/kiwibird/p/5015807.html
Copyright © 2020-2023  润新知