在java中查找中间值而不进行排序

在java中查找中间值而不进行排序,java,median,Java,Median,我需要用java编写一个程序,在不进行排序的情况下求三个或更多整数数组的中值。我需要一些想法。谢谢您可以使用。您还可以查找相关信息。您可以使用带有随机轴的快速排序分区步骤,而无需对其进行排序 public class TestMedian { public static void main(String[] args){ int[] a = {1,9,-4,7,6,11,3,2,10}; int median; median =

我需要用java编写一个程序,在不进行排序的情况下求三个或更多整数数组的中值。我需要一些想法。谢谢

您可以使用。您还可以查找相关信息。

您可以使用带有随机轴的快速排序分区步骤,而无需对其进行排序

public class TestMedian {

    public static void main(String[] args){ 
        int[] a = {1,9,-4,7,6,11,3,2,10}; 
        int median; 

        median = new Median().findMedian(a,0,a.length-1); 
        if(a.length%2 != 0) 
            System.out.print("the median is : "+a[median]); 
        else 
            System.out.print("the median is : "+(a[median] + a[median + 1])/2 ); 
    } 
    public int findMedian(int[] a,int left,int right){ 
        int index = 0; 
        int mid = (left+right)/2; 
        index = partition(a,left,right); 
        while( index != mid){ 
            if(index < mid) 
                index = partition(a,mid,right); 
            else index = partition(a,left,mid); 
        } 
        return index; 
    } 
    public int partition(int[] a,int i,int j ){ 
        int pivot = (i+j)/2; 
        int temp; 
        while(i <= j){ 
            while(a[i] < a[pivot]) 
                i++; 
            while(a[j] > a[pivot]) 
                j--; 
            if(i <= j){ 
                temp = a[i]; 
                a[i]=a[j]; 
                a[j] = temp; 
                i++;j--; 
            } 
        } 
        return pivot; 
    } 

}
公共类测试{
公共静态void main(字符串[]args){
int[]a={1,9,-4,7,6,11,3,2,10};
整数中值;
中位数=新的中位数().findMedian(a,0,a.length-1);
如果(a.长度%2!=0)
系统输出打印(“中位数为:”+a[中位数]);
其他的
系统输出打印(“中位数为:”+(a[中位数]+a[中位数+1])/2);
} 
公共int findMedian(int[]a,int左,int右){
int指数=0;
int mid=(左+右)/2;
索引=分区(a、左、右);
while(index!=mid){
如果(指数如果(我)不感兴趣,你为什么不把它分类呢?你想要一个类似的。@Jon Taylor,因为它很有趣homework@pianoman如果我不得不猜测,是的,我同意,但是,可能存在排序不可行的应用程序,例如时间关键型系统(特别是当阵列非常大时)@pianoman为什么会有这样刺耳的评论。即使是家庭作业,这又有什么关系呢?听起来用户只是想开始一些想法,而不是要求某人编程。它返回84(好像在左边搜索相等的数字和,在右边搜索一样),但应返回35:中位数为0.5个百分点-它应指向两个元素上的元素分割数组,其中1/2元素小于该数组,1/2元素大于该数组