查找中位数(java 快速排序)
2016-10-31 16:14
204 查看
中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。
java代码:
测试结果:
input:4 6 8 1 9 7 5
output:median is :6.0
input:4 3 6 1 9 6
output:median is :5.0
java代码:
import java.util.*; /** * @version 1.0 * @author zhouxiaowu * */ public class MedianFinder { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("please input some numbers:"); String str = sc.nextLine(); String[] s = str.split("\\s+"); int[] num= new int[s.length]; for(int i=0;i<s.length;i++){ num[i]=Integer.parseInt(s[i]); } double med=medianFinder(num); System.out.println("median is :"+med); } public static double medianFinder(int[] num){ int mid; int len=num.length; double med; if(len%2==0){ mid=len/2; med=(select(num,mid)+select(num,mid-1))/2.0; } else{ mid=(len-1)/2; med=(double)select(num,mid); } return med; } public static int select(int[] num,int k){ int low=0; int high=num.length-1; int j=0; int val=0; while(low<high){ j=partition(num,low,high); if(j==k){ val=num[j]; break; }else if(j>k){ high=j-1; }else{ low=j+1; } } return val; } public static int partition(int[] num,int low,int high){ int i=low; int j=high; int temp=num[i]; while(i<j){ while(i<j && temp<=num[j]) j--; if(i<j) num[i++]=num[j]; while(i<j && temp>=num[i]) i++; if(i<j) num[j--]=num[i]; } num[i]=temp; return i; } }
测试结果:
input:4 6 8 1 9 7 5
output:median is :6.0
input:4 3 6 1 9 6
output:median is :5.0
相关文章推荐
- Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
- java实现通过快速排序来查找数组中第n大的元素
- 利用快速排序的子程序查找中位数
- Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
- 17、java数组查找与交换排序及快速排序
- java JComboBox 自动查找
- Java写的查找重复电话号码程序-Java基础-Java-编程开发
- java二分查找
- java 快速排序
- java 二分法查找
- Java版 二分法查找 -Java 学习笔记 (21)
- 数据结构——快速排序原理及算法Java实现
- JAVA中用正则表达式做全文查找
- Java 通配符匹配查找文件
- Java实现折半查找(二分查找)的递归和非递归算法
- 快速排序原理及java实现
- JAVA在文本文件中查找字符
- linux 系统 查找 某一进程 例如 java 进程 或者 tomcat 进程等
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- Java的折半查找程序