求最小的k个数[通俗易懂]

求最小的k个数

大家好,又见面了,我是全栈君。

和高速排序有点类似,利用高速排序的划分算法,

划分算法见http://blog.csdn.net/buyingfei8888/article/details/8997803

依据int partition(int number[],int start,int end);返回值为数组下标,大小为index,index左边值均小于number【index】,右边均大于number【index】,若为k-1.则左边值均为所求。

代码:

#include <iostream>

using namespace std;

int partition(int number[],int start,int end){
	int temp=number[start];
	while(start<end){
		while(start<end && number[end]>temp)
			--end;
		if(start < end)
		    number[start++] = number[end];
		while(start<end && number[start]<temp)
			start++;
		if(start<end)
		     number[end--] = number[start];

		number[start]=temp;
	}

	return end;
}

void getLeastNumber(int * input,int start,int end,int * output,int k){
	if(NULL == input || NULL == output || k <=0 || start <0 || end < 1)
		return ;
	int index=partition(input,start,end);
	while(index != k-1){
		if(index > k-1){
			end = index -1;
			index =  partition(input,start,end);
		}
		if(index < k-1){
			start = index + 1;
			index = partition(input , start , end );
		}
	}
	for(int i=0;i<k;i++){
		output[i] = input[i];
		cout<< input[i]<<" ";
	}
	
}


int main(){
	int input[8]={2,1,4,3,99,100,56,909};
	int *output;
	getLeastNumber(input,0,7,output,7);
	return 0;

}

执行结果:

求最小的k个数[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115979.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • rsync自动同步_文件实时同步

    rsync自动同步_文件实时同步文章目录一、rsync同步简介1.关于rsync2.rsync同步源(备份源)二、配置rsync备份源1.关闭防火墙2.查看rsync是否已安装,一般系统已默认安装rsync3.建立/etc/rsync.conf配置文件4.为备份账户创建数据文件5.保证所有用户对源目录/var/www/html都有读取权限6.启动rsync服务程序7.关闭rsync服务8.编写测试网页三、rsync命令基本用法1.基本格式2.常用选项四、配置发起端1.关闭防火墙2.查看rsync是否已安装,一般

    2022年10月13日
  • 解决EXSi6.0没有WEB Client的问题

    解决EXSi6.0没有WEB Client的问题问题:安装好EXSi之后通过web访问,只有vSphere下载,没有openwebclient经过百度之后发现EXSi6.0不支持Web,但是支持安装Web,这就好办了。动手!!!思路:1、下载esxui-signed-7119706.vib2、通过SecureCRT连接EXSi服务器3、开启sftp连接4、转到EXSi的/tmp目录,这里仅仅是习惯,其他目录…

    2022年6月5日
  • Kafka 集群 Golang 应用实例

    Kafka 集群 Golang 应用实例

    2021年6月30日
  • springcloud feign原理_ribbon和feign实现负载均衡的原理

    springcloud feign原理_ribbon和feign实现负载均衡的原理Feign是什么?简单来说,feign是用在微服务中,各个微服务间的调用。它是通过声明式的方式来定义接口,而不用实现接口。接口的实现由它通过springbean的动态注册来实现的。fei…

    2022年10月4日
  • 通俗易懂的Latex教程文档[通俗易懂]

    通俗易懂的Latex教程文档[通俗易懂]本篇文档可以搭配视频讲解使用。讲解视频:通俗易懂的Latex教程(附数学建模国赛美赛模板)这是一份面向刚入门数模,想要快速上手Latex排版的同学的Latex教学文档。在线编辑网站overleaf:https://www.overleaf.com/我所使用的环境:TeXLive(自带编辑器TeXworks) 编辑器:TeXstudioTeXLive和TeXstud

    2022年7月14日
  • 超长干货 | Kubernetes命名空间详解

    超长干货 | Kubernetes命名空间详解

    2021年6月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号