线性时间选择算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福州大学数学与计算机科学学院
《计算机算法设计与分析》上机实验报告(1)
图中箭头指向表示大的数值指向小的数值,所以根据图
可以看出,在x的右边,每一个包含5个元素的组中至少有3
个元素大于x,在x的左边,每一组中至少有3个元素小于x (保证x分割一边必定有元素存在)。
图中显示的中位数的中位数x的位置,每次选取x作为划
分的好处是能够保证必定有一部分在x的一边。所以算法最坏
情况的递归公式可以写成:
,使用替换法可以得出)
(。
T
n
cn
4、算法代码:
#include
#include
using namespace std;
template
void Swap(Type &x,Type &y);
inline int Random(int x, int y);
template
int Partition(Type a[],int p,int r);
template
int RandomizedPartition(Type a[],int p,int r);
template
Type RandomizedSelect(Type a[],int p,int r,int k);
int main()
{
void SelectionSort(int a[]);
int s;
int a[2000];
int b[2000];
for(int i=0; i<2000; i++)
{
a[i]=b[i]=rand()%10000;