算法复习——分而治之篇之次序选择问题

本文围绕次序选择问题展开,即求数组中第k小的元素。先介绍问题背景与定义,指出排序求解虽可行但非最优。受快速排序启发,提出固定位置划分和随机位置划分两种分治求解方法,还给出伪代码,并分析了时间复杂度,随机位置划分期望时间复杂度为O(n)。

算法复习——分而治之篇之次序选择问题

以下内容主要参考中国大学MOOC《算法设计与分析》,墙裂推荐希望入门算法的童鞋学习!

1. 问题背景

最小值查找

  • 例如给定数组 A [ 1..16 ] A[1..16] A[1..16],寻找其中最小值,如下图所示。

    在这里插入图片描述

  • 依次扫描,记录最小值

    在这里插入图片描述

    那么,对问题稍加改变,如何求得数组中第 k k k小的元素

2. 问题定义

次序选择问题(Selection Problem)

输入:

  • 包含 n n n个不同元素的数组 A [ 1.. n ] A[1..n] A[1..n]
  • 整数 k ( 1 ≤ k ≤ n ) k(1\leq k \leq n) k(1kn)

输出:

  • 数组 A [ 1.. n ] A[1..n] A[1..n]中第 k k k小的元素 ( 1 ≤ k ≤ n ) (1 \leq k \leq n) (1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值