作业6

1.问题
[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]
在一个数组中找到第k小的元素并输出
2.解析
1
在这里插入图片描述
3.设计
[核心伪代码]
int select(int a[], int low, int high, int k)
{
int middle;

middle = split(a, low, high);
if (middle == k)
	return a[k];
else if (middle < k)
	return select(a, middle + 1, high, k);
else     /* if(middle > k) */
	return select(a, low, middle - 1, k);

}
4.分析
[算法复杂度推导]

在这里插入图片描述
在这里插入图片描述
5.源码
[github源码地址]
https://github.com/Wanghaonan520/algorithm

好的,我来解答您的问题。 根据题目所给的条件,系统内存空间为 640K,高端地址 40K 用来存放操作系统,因此实际可用内存空间为 600K,初始状态下可用内存空间为一块大小为 600K 的连续空间。 下面是使用首次适应算法进行内存分配和回收后,内存的最终使用情况的图示: ``` 初始状态:[ 0, 600K ] 作业1申请130K后,可用空间分为两部分: [ 0, 130K ] 和 [ 130K, 470K ] 作业2申请60K后,可用空间分为三部分: [ 0, 130K ]、[ 130K, 190K ] 和 [ 190K, 470K ] 作业3申请100K后,可用空间分为四部分: [ 0, 130K ]、[ 130K, 190K ]、[ 190K, 290K ] 和 [ 290K, 470K ] 作业2释放60K后,可用空间分为三部分: [ 0, 130K ]、[ 130K, 190K ] 和 [ 190K, 530K ] 作业4申请200K后,可用空间分为四部分: [ 0, 130K ]、[ 130K, 190K ]、[ 190K, 290K ] 和 [ 290K, 330K ] 由于第一块空闲区大小不足,因此从第二块空闲区开始分配。 作业3释放100K后,可用空间分为五部分: [ 0, 130K ]、[ 130K, 190K ]、[ 190K, 290K ]、[ 290K, 390K ] 和 [ 390K, 530K ] 作业1释放130K后,可用空间分为四部分: [ 0, 130K ]、[ 130K, 260K ]、[ 260K, 290K ] 和 [ 290K, 530K ] 作业5申请140K后,可用空间分为五部分: [ 0, 130K ]、[ 130K, 260K ]、[ 260K, 290K ]、[ 290K, 390K ] 和 [ 390K, 390K ] 由于第五块空闲区大小不足,因此从第一块空闲区开始分配。 作业6申请60K后,可用空间分为五部分: [ 0, 60K ]、[ 60K, 130K ]、[ 130K, 260K ]、[ 260K, 290K ] 和 [ 290K, 390K ] 作业7申请50K后,可用空间分为六部分: [ 0, 60K ]、[ 60K, 130K ]、[ 130K, 180K ]、[ 180K, 260K ]、[ 260K, 290K ] 和 [ 290K, 390K ] 作业6释放60K后,可用空间分为五部分: [ 0, 60K ]、[ 60K, 130K ]、[ 130K, 180K ]、[ 180K, 260K ] 和 [ 260K, 390K ] 内存最终使用情况: [ 0, 60K ]、[ 60K, 130K ]、[ 130K, 180K ]、[ 180K, 260K ] 和 [ 260K, 390K ] ``` 因此,最终内存使用情况如上所示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值