资源简介
1.问题描述 设计算法实现在一个具有在n各互不相同元素的数组A[1…n]中找出所有前k个最小元素的问题,这里k不是常量,即它是输入数据的一部分。要求算法的时间复杂性为Θ(n)。 2. 具体要求 输入的第一行是一个正整数m,表示测试例个数。接下来几行是m个测试例的数据,每个测试例的数据由三行组成,其中其中,第一行输入一个正整数n,表示元素的个数;第二行输入n个整数,整数之间用一个空格隔开。第三行输入一个正整数k,表示求该组测试例中的前k个最小元素。(设给出的每个整数序列中的元素是唯一的。) 输出:对于每个测试例输出一行,由k个整数组成,表示输入的n个整数中前k个最小元素。整数之间用一个空格隔开。
代码片段和文件信息
#include
#define M 100
#define N 5
/*..利用快速排序将数组按升序排序..*/
int partition (int key[]int lowint high)
{
int k;
k = key[low];
while(low < high)
{
while(low= k) high--;
key[low] = key[high];
while(low key[high] = key[low];
}
key[low] = k;
return low;
}
void QSort(int str[]int lowint high)
{
int k;
if(low < high)
{
k = partition(strlowhigh);
QSort(strlowk-1);
QSort(strk+1high);
}
}
/*...求中项...*/
void mid(int s[]int i int r[])
{
int j=5*i;
QSort(sjj+4);
r[i]=s[j+2];
}
/*...求数组的第K小元素...*/
int select(int A[]int pint k)
{
int qi=0jst;
int mc[M]small[M]mid1[M]big[M];
if(p<44)
{
/*...直接排序...*/
QSort(A0p-1);
return A[k-1];
}
/*...分成q组,每组5个元素...*/
q=p/5;
/*...求各组中项...*/
for(j=0;j {
mid(Ajc);
}
/*...递归调用求中项
- 上一篇:libiconv-1.9.2-lib
- 下一篇:linux下的串口调试助手
相关资源
- 迅捷PDF转换器破解版.rar
- 迅捷PDF编辑器破解版.rar
- 金字塔原理1清晰扫描版.pdf
- TeamViewer_11已激活+破解版+随意换ID.z
- FieldtheoryofGuidedwavesCollin__2nd.pdf
- 先进电气驱动的分析建模与控制[比
- IPC-J-STD033潮湿、回流焊敏感表面贴装
- 网络是怎样连接的_户根勤.pdf
- tesseract最新最全资料.rar
- 大话数据结构.epub
- iBATIS实战.pdf
- zw_new_smile-7110337-ImageAnimationTest.zip
- zw_jhn199388-9911706-基于51单片机都_自动
- zw_fan7983377-9600053-RecyclerViewDemo.zip
- zw_CHINA__.zip
- 我的第一本算法书+算法图解.zip
- 数学物理方法_德顾樵编著_2012.01_545页
- zw_WKTConvert.zip
- tdxw.exe
- zw_LabVIEW_8.20程序设计从入门到精通.
- zw_20170105220330215.zip
- unlocker-master最新版.rar
- Nginx核心知识100讲全套课件.zip
- navicat.11.2.16.premium_cs_x64破解版.zip
- 凸优化_Boyd_王书宁译.rar
- 云盘.rar
- Xshell5.exe
- 20170121135652618.rar
- DiskGenius4.7.0专业版.rar
- AlphaControlsv11.16StableFullSource(D5和D10
评论
共有 条评论