zoukankan      html  css  js  c++  java
  • Algs4-2.2.3快速排序中最大的元素最多交换次数

     2.3.3对于长度为N的数组,在Quick.sort()执行时,其最大的元素最多会被交换多少次?
    答:
    1)上取整((N-1)/2)次。

    2)为便于描述,令v为切分元素,M为最大元素。
    由于M在每一次切分时都将从参与切分的子数组的左边交换到右边,那么切分次数越多M被交换的次数也越多。要完成最多次的切分就需要保证每次切分后右子数组长度最长,同时要确保M不作为v元素出现或只是M在最后一次交换时为v出现(v元素只交换一次),要实现上述要求就要M在v的右边第一个位置上,并且M在后续交换后在下一个v的右边第一个位置上。那么M每次被交换最多只向右边移动两个位置,那么可供M移动的长度为N-1,在N>2的情况,一开始M在第二个位置,每次交换向右最多移动两个位置,那么 上取整(N-1)/2是最大元素的交换次数。

    3)排列:
    令N个元素的元素值如下,且有如下不等关系:
    V1a < V1<V2a< V2< V3a< V3< V4a< V4<V5a< V5< V6a< V6<…<M
    令C(N)为数组长度为N时M元素的最多交换次数的函数。
    C(0)=0
    C(1)=0

    C(2)=1
    0)M,V1
    1)V1,M(交换M)

    C(3)=1
    0)V1,M,V1a
    1)V1,V1a,M (交换M) 
    2)V1a,V1,M

    C(4)=2
    0)V1,M,V1a,V2
    1)V1,V1a,M,V2(交换M)
    2)V1a,V1,M,V2
    3)V1a,V1,V2,M(交换M)

    C(5)=2
    0)V1,M,V2,V1a,V2a
    1)V1,V1a,V2,M,V2a(交换M)
    2)V1a,V1,V2,M,V2a
    3)V1a,V1,V2,V2a,M(交换M)
    4)V1a,V1,V2a,V2,M

    C(6)=3
    0)V1,M,V2,V1a,V2a,V3
    1)V1,V1a,V2,M,V2a,V3(交换M)
    2)V1a,V1,V2,M,V2a,V3
    3)V1a,V1,V2,V2a,M,V3(交换M)
    4)V1a,V1,V2a,V2,M,V3
    5)V1a,V1,V2a,V2,V3,M(交换M)

    C(7)=3
    0)V1,M,V2,V1a,V3,V2a,V3a
    1)V1,V1a,V2,M,V3,V2a,V3a(交换M)
    2)V1a,V1,V2,M,V3,V2a,V3a
    3)V1a,V1,V2,V2a,V3,M,V3a(交换M)
    4)V1a,V1,V2a,V2,V3,M,V3a
    5)V1a,V1,V2a,V2,V3,V3a,M(交换M)
    6)V1a,V1,V2a,V2,V3a,V3,M

    C(8)=4
    0)V1,M,V2,V1a,V3,V2a,V3a,V4
    1)V1,V1a,V2,M,V3,V2a,V3a,V4(交换M)
    2)V1a,V1,V2,M,V3,V2a,V3a,V4
    4)V1a,V1,V2,V2a,V3,M,V3a,V4(交换M)
    5)V1a,V1,V2a,V2,V3,M,V3a,V4
    6)V1a,V1,V2a,V2,V3,V3a,M,V4(交换M)
    7)V1a,V1,V2a,V2,V3a,V3,M,V4
    8)V1a,V1,V2a,V2,V3a,V3,V4,M(交换M)

  • 相关阅读:
    linux 删除已输入的命令行
    LAMP编译参数查看
    mysql忘记密码的重置方法
    cmd大全_练习
    Parallel WebDriver executions using TestNG
    Internet Explorer for Mac the Easy Way: Run IE 7, IE8, & IE9 Free in a Virtual Machine
    linux delete files older than 3 days
    5 commands to check memory usage on Linux
    Base64 Encoding / Decoding in Node.js
    10 Useful du (Disk Usage) Commands to Find Disk Usage of Files and Directories
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9860186.html
Copyright © 2011-2022 走看看