社区
数据结构与算法
帖子详情
分治法实现元素选择问题!!!
xiaomubiao
2004-04-30 12:15:06
给定线形序列集中n个元素和一个整数k,1≤k≤n,输出这n个元素中第k小元素的值及其位置。;
...全文
458
2
打赏
收藏
分治法实现元素选择问题!!!
给定线形序列集中n个元素和一个整数k,1≤k≤n,输出这n个元素中第k小元素的值及其位置。;
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aheadyes
2004-04-30
打赏
举报
回复
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define Swap(a,b) {int t=b; b=a; a=t;}
int partition(int a[],int L, int r)
{
int i = L-1,j=r;
int v = a[r];
while(1)
{
while(a[++i] < v);
while(v < a[--j]) if(j==L) break;
if(i>=j) break;
Swap(a[i],a[j]);
}
Swap(a[i],a[r]);
return i;
}
int RandomPartition( int a[], int l, int r)
{
srand(time(0));
int i = rand()%(r-l+1)+l;//随机划分:
Swap(a[i],a[r]);
return partition(a,l,r);
}
int RandomSelect(int a[], int l, int r, int k)
{
if(r<=l) return a[r];
int i= RandomPartition(a,l,r);
int j = i-l+1;
if(j == k)
return a[i];
if(j>k)
return RandomSelect(a,l,i-1,k);
else
return RandomSelect(a,i+1,r,k-j);
}
void disp(int a[],int n)
{
for(int i=0; i<n; i++)
printf("%d ", a[i]);
}
int main()
{
int a[]={1,12,3,-4,81,16,100,17};
disp(a,8);
int k;
printf("\nplease input the k:");
scanf("%d",&k);
printf("\n the %d's Big Number is : %d ",k,RandomSelect(a,0,7,k));
system("pause");
}
BlueSky2008
2004-04-30
打赏
举报
回复
http://expert.csdn.net/Expert/topic/2642/2642994.xml?temp=.6752436
java数据结构(Java版)(第3版)[叶核亚] 全套资料
java数据结构(Java版)(第3版)[叶核亚] 全套资料包含:[电子教案] [配套资料] [习题解答与试题库] 内容相当丰富 不收藏肯定后悔呀
十三个经典算法研究PDF文档[带目录+标签]
本文件是十三个经典算法研究+红黑树系列的,带目录+标签的PDF文档。在此之前,网上绝无仅有。希望,对你有帮助。博客地址为:http://blog.csdn.net/v_JULY_v。
1000多种java算法大全源码包
1000多种java算法大全源码包
Java40道最经典算法
Java最够经典的算法题,初学者必懂。好好学,好好练,这就是学习的最终的秘诀。
用
分治法
实现
元素
选择
实验内容: 1、给定线形序列集中n个
元素
和一个整数k,1≤k≤n,输出这n个
元素
中第k小
元素
的值及其位置;2、简述该算法的原理、步骤。对该算法与直接排序查找进行比较;3、编写并调试程序。测试要求:
元素
个数不少于100// SelectK.cpp :
分治法
选择
第k 小的
元素
。// VC++6.0 下测试通过#include #include #include // 交换两个变量的值
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章