线性时间选择算法实现.docVIP

  • 2
  • 0
  • 约2.04千字
  • 约 3页
  • 2018-12-10 发布于河北
  • 举报
线性时间选择算法实现

【题目】:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,(这里给定的线性集是无序的) 【思路】:如果能在线性时间内找到一个划分基准,使得按这个基准所划分出的2个子数组的长度都至少为原数组长度的ε倍(0ε1是某个正常数),那么就可以在最坏情况下用O(n)时间完成选择任务。例如:若ε=9/10,算法递归调用所产生的子数组的长度至少缩短1/10。所以,在最坏情况下,算法所需的计算时间T(n)满足递归式T(n)≤T(9n/10)+O(n) 。由此可得T(n)=O(n)。 #includestdio.h #includestdlib.h #includemalloc.h #includetime.h int select(int *a,int p,int r,int k); int partition(int *a,int p,int r,int x); void sort(int *a,int p,int r); void swap(int *a,int *b); //主函数 int main() { int *a,cnt,i,k,result; FILE *fp; //clrscr(); printf(Input the count of elements:); scanf(%d,cnt); printf(Choose the element :);

文档评论(0)

1亿VIP精品文档

相关文档