本文参考UCAS卜东波老师算法设计与分析课程撰写
前言
本文内容承接上次分治思想的内容,分治思想的应用十分广泛,除了经典的排序中的使用以外,还有许多类型的题目可以利用分治思想简单解决。如快速从数组中找出中位数,或更一般地。找出第k小的数我们用一个简单的问题来引入。通过这个问题,我们能够更进一步理解如何对pivot进行选择分析。
寻找第k小的元素
问题描述与分析
-
给定一个乱序数组A,试求该数组中第k小的元素?
最直白的解决办法,就是对数组进行排序返回下标为k-1的元素,排序的时候选用快排或归并(若不考虑内存使用),虽然暴力,但是排序的时间复杂度是 O ( n l o g n ) O ( n l o g n ) O ( n l o g n ) O(nlogn)O(nlogn) O(nlogn) O(nlogn)O(nlogn)O(nlogn)