数组中第k小的数

原创 2015年07月06日 16:57:32
/**
 * 选取temp=arr[i]作为枢纽,比他小的放他左边,大的放右边,然后判断temp的位置,如果他的位置为k-1,
 * 他就是k小的数;如果他小于k-1,那么k小的数一定在他右边,采用递归在右边继续查找;大则查找左边。
 */
import java.util.Scanner;

public class getKMin {
	public static int quickSort(int[] arr,int low,int high,int k){
		int i,j,temp;
		if(low>high)
			return Integer.MIN_VALUE;
		i=low+1;
		j=high;
		temp=arr[i];
		while(i<j){
			while(i<j&&arr[j]>=temp)
				j--;
			if(i<j)
				arr[i++]=arr[j];
			while(i<j&&arr[i]<temp)
				i++;
			if(i<j)
				arr[j--]=arr[i];
		}
		arr[i]=temp;
		if(i+1==k)
			return temp;
		else if(i+1>k)
			return quickSort(arr, low, i-1, k);
		else
			return quickSort(arr, i+1, high, k);
	}
	public static int getKMin(int[] arr,int k){
		if(arr==null)
			return Integer.MIN_VALUE;
		if(arr.length<k)
			return Integer.MIN_VALUE;
		return quickSort(arr, 0, arr.length-1, k);
	}
	public static void main(String[] args) {
		int arr[]={1,5,2,6,8,0,6};
		Scanner input=new Scanner(System.in);
		int k=input.nextInt();
		System.out.println("第"+k+"小的数为:"+getKMin(arr,k));
	}
}

查找数组中第k大的数

  • 2016年01月08日 16:22
  • 669B
  • 下载

Java实现:在N个乱序的数组中找第K大的数

类似于快速排序,执行一次快速排序之后,每次只选择一部分继续执行快速排序,直到找到第K大个元素为止,这个元素在数组位置后面的元素即为所求。 时间复杂度:O(n) 利用快排的思想,从数组arr中随机找出一...

线性时间复杂度求数组中第K大数

求数组中第K大的数可以基于快排序思想,步骤如下:       1、随机选择一个支点       2、将比支点大的数,放到数组左边;将比支点小的数放到数组右边;将支点放到中间(属于左部分)    ...

求数组的第K小数,O(nlogn) 和 O(N)的算法

在面试中碰到求数组中第K小的数,(或者最小的的K个数)。 最直观的方法是排序之后,选择数组A的元素A[K-1];  以快速排序为例,排序的时间复杂度为O(NlogN), 选择元素的时间为O(...

使用二分法从数组中找出最小的k个数

问题:从n个元素的无序数组中,找出最小的k个元素. 分析:可借助快速排序算法的思想,将数组分而治之——随机选取数组中某个元素的值为中值,并以此中值为分水岭,按大小将所有元素分为两组。之后将偏...

HDU 2852 (树状数组求第 k个 大于a 的数)

题意: 三种操作 0  x:   向容器里加入x; 1  x: 在容器内删除x,不存在x则输出“No Elment” 2  x  y: 在容器中找到大于x的第y个数,没有则输出...

排序算法应用-查找无序数组中第前k个小数

最小的k个数,输入n个整数,找出其中最小的k个数,例如输入4、5、1、6、2、7、3、8、1、2,输出最小的4个数,则输出1、1、2、2。 此题可以用快速排序的思想来做,快速排序过程中,我们是用分...

剑指offer-求数组中最小的k个数

题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解法1(冒泡排序)冒泡排序每循环一次能够选出一个最小的数,题目要求...

一些程序函数 C++语言,找数组中弟第K大的数和自己写的子符串截取函数

最近自己写了一些小函数,调试通过了的,VS2010 C++ 主要是两个函数:找数组中弟第K大的数和第k小的数,以及子符串截取函数、拼接、颠倒输出、字符串中子串出现的次数。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组中第k小的数
举报原因:
原因补充:

(最多只允许输入30个字)