zoukankan      html  css  js  c++  java
  • 排序算法----快速排序

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

    翻开数据结构的书,复(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很大时,小鹿明显高于其它算法。在基本排好的情况下避免用这种算法。

  • 相关阅读:
    Python3 获取抖音无水印视频 2020年12月23日----lanyi原创
    javascript9分享到菜单,菜单在屏幕左侧的移出和收回
    javascript8图片刹车运动
    javascript7图片的淡入淡出
    javascript6鼠标拖拽图片
    javascript5每秒改变字体颜色的大小
    javascript4动态生成表格
    javascript3跟随鼠标的提示框
    javascript2选项卡
    同学,为什么Golang中不用this和self
  • 原文地址:https://www.cnblogs.com/amingxiansen/p/13167177.html
Copyright © 2011-2022 走看看