四分位算法中的一种java代码实现
2017-11-14 20:57
344 查看
四分位算法中最简单的一种java代码实现:
Q1的位置= (n+1) × 0.25
Q2的位置= (n+1) × 0.5
Q3的位置= (n+1) × 0.75
n表示项数
Q1的位置= (n+1) × 0.25
Q2的位置= (n+1) × 0.5
Q3的位置= (n+1) × 0.75
n表示项数
/** * 四分位算法 *@param arr 长度为n的数组 *@return quartiles Q1/Q2/Q3数组 **/ public double[] getQuartiles(double[] arr) { double[] arr1 = new double[4]; // 长度小于4时,补齐arr数组至长度四位 if (arr.length < 4) { for (int i = 0; i < arr.length; i++) { arr1[i] = arr[i]; } for (int k = arr.length; k < 4; k++) { arr1[k] = arr1[k]; } return arr1; } double[] tempArr = Arrays.copyOf(arr, arr.length); Arrays.sort(tempArr); double[] quartiles = new double[3]; int n = arr.length; double Q1 = (n+1) * 0.25D; double Q2 = (n+1) * 0.5D; double Q3 = (n+1) * 0.75D; //Q1 if(Q1 % 2 == 0){ quartiles[0] = tempArr[(int)Q1]; }else{ double Q1y = Q1-Math.floor(Q1); double Q1r; Q1r = (1D - Q1y) * tempArr[(int) Math.floor(Q1)-1] + Q1y * tempArr[(int) Math.ceil(Q1)-1]; quartiles[0] = Q1r; } //Q2 if(Q2 % 2 == 0){ quartiles[1] = tempArr[(int)Q2]; }else{ double Q2y = Q2-Math.floor(Q2); double Q2r; Q2r = (1D - Q2y) * tempArr[(int) Math.floor(Q2)-1] + Q2y * tempArr[(int) Math.ceil(Q2)-1]; quartiles[1] = Q2r; } //Q3 if(Q3 % 2 == 0){ quartiles[2] = tempArr[(int)Q3]; }else{ double Q3y = Q3-Math.floor(Q3); double Q3r; Q3r = (1D - Q3y) * tempArr[(int) Math.floor(Q3)-1] + Q3y * tempArr[(int) Math.ceil(Q3)-1]; quartiles[2] = Q3r; } return quartiles; }
相关文章推荐
- 【算法】B+树的研读及实现(2)---java版核心代码
- 又一种JSP实现的Java通用简单分页算法
- java排列组合算法代码实现
- 游戏碰撞之OBB算法实现(java代码实现)
- 最短路径A*算法原理及java代码实现(看不懂是我的失败)
- 算法——数据结构图的最短路径实现JAVA代码
- JAVA中的排序算法及代码实现
- java集合框架集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
- 算法代码实现之冒泡排序,Java实现
- 【算法与数据结构】冒泡、插入、归并、堆排序、快速排序的Java实现代码
- 算法代码实现之选择排序,Java实现
- 通过Java实现一种常用的权限控制算法
- java代码实现贪心算法删除数字问题
- java 算法之快速排序实现代码
- java排列组合算法代码实现
- 如何用70行Java代码实现深度神经网络算法
- 【算法】红黑树的核心代码实现(java版)
- 现代应用密码学中椭圆曲线求点集E以及点乘算法的java代码实现
- 【算法】【算法】b树的实现(2)---java版代码
- 数独问题的一种简单算法代码实现