首页 > 编程语言 > 详细

算法第二章上机实践报告

时间:2020-10-03 23:52:51      阅读:42      评论:0      收藏:0      [点我收藏+]

1.实践题目名称:找第k小的数
2.问题描述:设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。

3.算法描述:用快速排序的思路,每一趟的用来划分的数在排列后的位置就是最后结果中的位置,即为数组中其下标为+1小的数(数组从0开始),若其数组下标+1小于k,则第k小的数在其右边,对右边使用递归算法,其数组下标+1大于k,则第k小的数在其左边,对左边使用递归算法。

4、算法时间及空间复杂度分析:
时间复杂度:运用了分治法和快速排序法。用数组中的元素x对数组进行划分,分成左右两个区域,判断x是否为第k小的数,若是,则输出,若不是继续划分查找,平均时间复杂度则为O(n)

空间复杂度:find函数运用了递归,空间复杂度为O(logn)。

5.心得体会:对一直没有思路的递归算法有了系统的了解,明白了“三部曲”:分解、递归求解、合并。

算法第二章上机实践报告

原文:https://www.cnblogs.com/chenweicong/p/13765207.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!