RandomizedSelect.h:

#include <stdlib.h>

namespace dksl
{
/*
*交换
*/
void Swap(int* numArray,int swapFrom,int swapTo)
{
int temp=numArray[swapFrom];
numArray[swapFrom]=numArray[swapTo];
numArray[swapTo]=temp;
} /*
*随机化快排
*/
int RandomizedPartition(int* numArray,int head,int tail)
{
int r=rand()%(tail-head+)+head;
Swap(numArray,r,tail); int pivot=numArray[tail];
int i=head-;
int j=tail;
while(true)
{
do
{
i++;
}while (i<=tail&&numArray[i]<pivot);
do
{
j--;
}while (j>=head&&numArray[j]>pivot);
if(j<i)
break;
Swap(numArray,i,j);
}
Swap(numArray,j+,pivot);
return j+;
} /*
*选择任意顺序统计量,numArray为待选择数组,head为数组开始位置索引,tail为数组结束位置索引,i为待选择的第i+1小的值
*/
int RandomizedSelect(int* numArray,int head,int tail,int i)
{
if(head==tail)
return numArray[head];
int q=RandomizedPartition(numArray,head,tail);
int k=q-head+;
if(i==k)
return numArray[q];
else if(i<k)
return RandomizedSelect(numArray,head,q-,i);
else
return RandomizedSelect(numArray,q+,tail,i-k);
}
}

RandomizedSelect.cpp

// RandomizedSelect.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include "RandomizedSelect.h" using namespace std;
using namespace dksl;
int _tmain(int argc, _TCHAR* argv[])
{
int a[] = {, , , , , , , , , };
cout<<RandomizedSelect(a,,,)<<endl;
system("PAUSE");
return ;
}

最新文章

  1. 通过Maven插件发布JaveEE项目到tomcat下
  2. g++编译总结
  3. Java将其他数据格式转换成json字符串格式
  4. delphi CoolBar这个怎么弄没了
  5. &lt;1&gt;数据引用与匿名存储
  6. Spring学习(20)--- Schema-based AOP(基于配置的AOP实现) -- 配置切入点pointcut
  7. javascriptDOM节点
  8. docker搭建zabbix
  9. 编译安装python3.6后pip3无法安装模块问题处理
  10. bootStrap-table服务器端后台分页的使用,以及自定义搜索框的实现,前端代码到数据查询超详细讲解
  11. java异常和错误相关
  12. struts2+springmvc+hibernate开发。个人纪录
  13. 2.QT-窗口组件(QWidget),QT坐标系统,初探消息处理(信号与槽)
  14. &lt;1&gt;lua编译环境 数据类型和局部变量
  15. 下载tensorflow-gpu版本的源
  16. 实现Excel单元格中的下拉选项
  17. “21天教你学会C++”
  18. 【TFS错误】TF30063: 您没有访问 Microsoft-IIS/8.5 的权限
  19. OSX: SSH密钥使用日记(2)
  20. e648. 双击和三击事件

热门文章

  1. Python随笔--序列
  2. 3 第一个Django应用 第2部分(管理站点)
  3. LeetCode 46 全排列
  4. Centos7安装xenserver tools
  5. python基础——列表
  6. scikit-learn实现简单的决策树
  7. [转]Golang TLS
  8. CentOS磁盘满了,导致磁盘无法写入,这么清理
  9. spring boot 之 spring task(定时任务)
  10. JAVA第八次作业