社区
数据结构与算法
帖子详情
分治法实现元素选择问题!!!
xiaomubiao
2004-04-30 12:15:06
给定线形序列集中n个元素和一个整数k,1≤k≤n,输出这n个元素中第k小元素的值及其位置。;
...全文
397
2
打赏
收藏
微信扫一扫
点击复制链接
分享
举报
写回复
2 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
打赏
举报
回复
赞
相关推荐
用
分治
法
实现
元素
选择
用
分治
法
实现
元素
选择
给定线形序列集中n个
元素
和一个整数k,1≤k≤n,输出这n个
元素
中第k小
元素
的值及其位置。
分治
法
-有重复
元素
的排列
问题
.cpp
王晓东-计算机算
法
与分析的
分治
法
例题 设R={r1,r2,……,rn}是要进行排列的n个
元素
。其中
元素
r1,r2,……,rn可能相同。使设计一个算
法
,列出R的所有不同排列。 给定n以及待排列的n个
元素
。计算出这n个
元素
...
第K小
元素
(
分治
法
)
给定一个线性序列集,要求求出其中指定的第K小的数的值和位置,如给定n个
元素
和一个整数i,1≤i≤n,输出这n个
元素
中第i小
元素
的值及其位置
次序
选择
问题
java代码完整
实现
分治
法
分治
法
解决次序
选择
问题
: 我们可以借用随机主元的快速排序的思维去解决该
问题
(点击查看本人另一篇博文随机化快速排序:随机化快速排序),与快速排序不同的是,在主元下标等于k时,我们就可以直接退出,不需要再...
C语言
实现
分治
法
实例
本文为大家分享了C语言
实现
分治
法
实例代码,供大家参考,具体内容如下 使用
分治
法
求最大值 这个函数将数组a[l]…a[r]分成a[l],…,a[m]和a[m+1],…a[r]两部分,分别求出每一部分的最大
元素
(递归地),并返回较大的那一个...
递归
分治
法
实现
有重复
元素
的排列
问题
1.
问题
描述 设集合R={r1,r2,...,rn}是要进行排列的n个
元素
,其中r1,r2,...,rn可能相同。 试着设计一个算
法
,列出R的所有不同排列。 即,给定n以及待排的n个可能重复的
元素
。计算输出n个
元素
的所有不同排列。 2....
最小K
元素
之
分治
法
——输入有坑!!!!
这道题思想是用
分治
法
通过递归
实现
,借用了快排的原理,通过快排中分区函数得到的基准
元素
,得到基准
元素
前面的
元素
比基准
元素
小,后面的比基准
元素
大,这样通过统计基准
元素
前面的个数判断目标第K小
元素
是在基准...
分治
法
——k小
元素
问题
k小
元素
问题
是利用
分治
法
进行求解的经典
问题
之一。
问题
描述 已知一个长度为n的数组,返回数组中的第k小的
元素
。 分析设计 要想找出第k小的
元素
,我们首先想到的方
法
肯定是先将数组进行排序,返回第k个
元素
即可...
python使用
分治
法
实现
求解最大值的方
法
本文实例讲述了python使用
分治
法
实现
求解最大值的方
法
。分享给大家供大家参考。具体分析如下: 题目: 给定一个顺序表,编写一个求出其最大值和最小值的
分治
算
法
。 分析: 由于顺序表的结构没有给出,作为演示
分治
法
...
选择
问题
(第k小
元素
)(
分治
法
)
选择
问题
即第k小
元素
问题
。 解决该
问题
的基本思想与快速排序算
法
相同,通过
选择
基元进行划分,从而知道第k小
元素
在哪里。 原始数据使用随机函数生成。 采用结构化程序设计,可以很容易改为从标准输入或文件读入数据...
经典算
法
5:用
分治
法
实现
元素
选择
用
分治
法
实现
元素
选择
所用函数: 在该程序中总共用了六个函数: 1、两个数的交换函数swap( ); 2、对一个数组进行划分函数partition(int a[],int p,int r,int x); 3、快速排序函数 void quicksort(int a[],...
c语言
分治
法
求第k小
元素
,
分治
法
(第k小
元素
poj.ppt
分治
法
(第k小
元素
poj第六章 分 治 6.1 引言
分治
法
的设计思想是,将一个难以直接解决的大
问题
,分割成一些规模较小的相同
问题
,以便各个击破,分而治之。 战略 算
法
设计技术 划分——治理——组合 6.1.1算
法
总体思想...
分治
法
求众数
分治
法
求众数
分治
法
解决快速排序
问题
的算
法
思路及代码
实现
随机
选择
一个数为基准数,把基准数和首
元素
交换位置 ② 移动指针。设置左指针和右指针,左指针从左往右移动,一旦找到比基准数大的
元素
就停下来,然后左指针从右往左移动,一旦找到比基准数小的
元素
就停下来,然后把...
查找最大和次大
元素
(
分治
法
实现
)
查找最大和次大
元素
(
分治
法
实现
)
分治
法
解决集合划分
问题
分治
法
解决集合划分
问题
欢迎再次进入二阳的学习课堂!!这次比较简单。咱们先看一下
问题
算
法
设计: 咱们可以定义函数f(n,m);当nm或者m0时,f(n,m)是为1的;除这种特殊情况外,咱们发现它的值可以分两部分求,...
分治
法
实现
众数
问题
众数
问题
(
分治
法
)
问题
描述:给定含有n个
元素
的多重集合S,每个
元素
在S中出现的次数称为该
元素
的重数,多重集合S中重数最大的
元素
称为众数。例如,S={1, 2 ,2 ,2 ,3 ,5}。多重集合S的众数是2,其重数为3。算
法
...
计算机算
法
设计与分析(第3版)实验(用
分治
法
实现
元素
选择
用动态规划
法
求解0/1背包
问题
用贪心算
法
求解Prim算
法
用回溯
法
求解N后
问题
用分支限界
法
实现
旅行售货员
问题
)
实验一 用
分治
法
实现
元素
选择
实验二 用动态规划
法
求解0/1背包
问题
实验三 用贪心算
法
求解Prim算
法
实验四 用回溯
法
求解N后
问题
实验五 用分支限界
法
实现
旅行售货员
问题
这些实验的大部分源代码都是书上的, 我用的...
分治
法
求最大值的C++
实现
分治
法
求最大值的c++的简单
实现
,代码简单容易理解
大学生上网调查报告4篇.pdf
大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf
发帖
数据结构与算法
加入
微信扫一扫
点击复制链接
3.2w+
社区成员
3.5w+
社区内容
数据结构与算法相关内容讨论专区
社区管理员
申请成为版主
帖子事件
创建了帖子
2004-04-30 12:15
社区公告
暂无公告