线性时间选择 --- Java实现
定义:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素。
主要思想:将线性集的n个元素划分为n/5组,取出每组中位数,得到中位数的中位数(偶数取中间较大那个数),将此数作为基数进行一次快排,缩小查找范围,然后再次从分组到快排的步骤,不断缩小范围,直到缩小到自己指定的足够小的范围内,直接进行一个排序,得到最后的结果。
假设:一个数组a有25个元素,按照线性时间选择找出其第k小的数,设左指针为p,右指针为r。
将25个元素分为每5个作为一组,黑色是每组待排序的中位数所在位置
原创
2021-09-29 02:04:21 ·
997 阅读 ·
0 评论