首页 > 编程知识 正文

中位数的计算公式初中数学,中位数的计算方法统计学

时间:2023-05-05 23:03:44 阅读:276988 作者:3190

两种方法

1,排序法

2,分治策略——采用快速排序的思想

package 中位数;import java.util.Arrays;import java.util.Scanner;public class Mid_Num {/* * 有两种方法计算中位数 * 排序 * 分治 */static int a[]=new int[1001];public static int mn1(int[] a,int n){//采用排序的方法计算中位数int y=0;//存放求得的中位数Arrays.sort(a,0,n);//for(int i=0;i<n;i++)//{//System.out.print(a[i]+" ");//}//System.out.println();//System.out.println(n/2);int x=(int)Math.floor(n/2);for(int i=0;i<n;i++){y=a[x];}return y;}/* * 方法二,采用分治算法 * 依旧是借助快速排序的思想 */public static int select(int left,int right,int k){//如果数组中只有一个元素if(left>=right){return a[left];}//如果数组中的元素大于一个//采用选择排序的方法将数组进行排序int i=left;//从左到右的指针int j=right+1;//从右到左的指针int pivot=a[left];//选择最左边的元素作为初始的轴值while(true){//在左侧寻找大于pivot的元素do {i=i+1;}while(a[i]<pivot);//在右侧寻找小于pivot的元素do {j=j-1;}while(a[j]>pivot);if(i>j)break;//当i和j错过时swap(a,a[i],a[j]);}if(j-left+1==k)//轴值左侧的元素的个数加上轴值等于k{//说明轴值就是第k小的元素return pivot;}a[left]=a[j];a[j]=pivot;if(j-left+1<k){return select(j+1,right,k-j+left-1);}elsereturn select(left,j-1,k);}public static void swap(int [] a,int x,int y){int temp;temp=a[x];a[x]=a[y];a[y]=temp;}public static int mn2(int[] a,int n){int y=select(0,n,n/2);return y;}public static void main(String[] args){Scanner cin=new Scanner(System.in);for(int i=0;i<10;i++){a[i]=cin.nextInt();}int x=mn1(a,10);System.out.print(x);cin.close();}}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。