第二章上机实践报告
1.实践题目名称:
找第k小的数
2.问题描述:
设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。
3.算法描述:
利用快排的partition,先把数组的第一个数排在正确位置并返回它为第i个数。再把i和k进行比较,如果i<k,则在i的右区间找;如果i>k,则在i的左区间寻找;如果等于则查找完毕,返回数值。
4.算法时间及空间复杂度分析:
时间复杂度:O(n)
空间复杂度O(n)
5.心得体会:
分治法有时候能极大地降低时间复杂度,达到意想不到的结果。