算法设计与分析习题谁会做给定数组A=(98,31,22,44,37,9)试用分治法求其第二小元素(要求使用SELECT算法)

来源:学生作业帮助网 编辑:作业帮 时间:2024/10/05 19:04:23
算法设计与分析习题谁会做给定数组A=(98,31,22,44,37,9)试用分治法求其第二小元素(要求使用SELECT算法)
xS[oA;l &Iјl>AR}aaePZREJKb̙i)Df;mS 6IͼQXeTBi &s`Ԥ5{wCw[R,&Kk7"=@nʆC!N;Jr1GOt8|;z#/&_\ESS7#wv|%2?(Ya'\ @3\ &5Pn | .dW/^o~F6bɬ_C2kf/Iy 7pDOBN }y0hU%B>3ri}(V#0U0BxGҵ %sB,Û%{,ӂB%N,GO4edYE fcP'Qv lPlAUq[DJt/䓁2"UI{+!٣Pd8r |7y\gY]a. 1=z}!5iqW\m>*KNwdGfp0-*9PωUڃ0C]Y2oU

算法设计与分析习题谁会做给定数组A=(98,31,22,44,37,9)试用分治法求其第二小元素(要求使用SELECT算法)
算法设计与分析习题谁会做
给定数组A=(98,31,22,44,37,9)
试用分治法求其第二小元素
(要求使用SELECT算法)

算法设计与分析习题谁会做给定数组A=(98,31,22,44,37,9)试用分治法求其第二小元素(要求使用SELECT算法)
这个是利用分治思想来解
考点是快排
可以用二分法对原数组进行排序
快排(QuickSort)是一种基于分治思想的二分排序法.对于一段序列,我们先
选出一个划分元素,然后用线性的时间复杂度将大于和小于划分元素的元素
移动到划分元素的两边,再由划分元素处将序列拆分为两部分,分别进一步
处理.显然这里划分元素的选择决定了拆分序列的平均程度.
因为算法是二分的,每段序列的处理是线性的,易知时间复杂度为O(nlgn).
可是假设每一次选择的划分元素都是序列里最大或最小的,那么拆分的时间
复杂度也会变成线性的,所以快排在最坏情况下的时间复杂度为O(N^2).