• 排序算法----快速排序


      今天面试被问了关于排序算法的问题,突然发现大一学的数据结构都忘得差不多了,大致找了一下基本的排序算法,面试的时候可能会被问到,熟悉的排序算法有哪些?

    翻开数据结构的书,复(yu)习了一下这个算法,刚开始看还真有点不是很清晰,最后自己给自己写了道例题:

    大致说下排序原理:

    1.选择第一个数作为关键码,取出关键码换成空位,首位置和尾位置分别是low和high的位置;

    2.从high位置往前找到比关键码小的数,将这个数与空位(方框)互换位置,同时high移动到此位置;

    3.从low位置往前找到比关键码大的数,将这个数与空位(方框)互换位置,同时low移动到此位置;

    4.重复2.3步骤,直到low和high重合;

    5.这样就以关键码为界限,将data分成比关键码大的和比关键码小的两组数;

    6.对两组数分别重复1.2.3.4步骤,直到所有数有序排列。

     快速排序的效率分析

      快速排列的最差情况是每次选定的支点记录不能将待排序列很好的分割成两个独立的子序列,而是一个子序列中无记录,另一个中有n-1个记录。如果对一个原来已排好序的序列做快速排序,就会出现这种情况,而且发生在每一次的分割中,实际上就变成了冒泡排序,时间复杂度变得很差,为O(n²);

      整个算法的时间复杂度是O(nlog₂n);它是目前基于“记录比较”操作的内部排序方法最快的,因此得名。当n很大时,小鹿明显高于其它算法。在基本排好的情况下避免用这种算法。

  • 相关阅读:
    水晶报表关于System.Web.Extensions报错的问题
    个人下一步学习计划
    一个老程序员对数据库的一点纠结
    Visual SourceSafe权限配置记录
    SQL SERVER 2008代码折叠小技巧
    用命令行自动备份数据库到其他服务器
    CrystalReports 2008序列号留档
    ····
    C语言中的static
    页面自动刷新的几种方法
  • 原文地址:https://www.cnblogs.com/amingxiansen/p/13167177.html
Copyright © 2020-2023  润新知