2012-10-25 61 views
0

需要将中间值和标准偏差添加到以下程序中,但我不知道从哪里开始,我知道我想要它做什么,但不知道如何使它发生,尤其是因为中位数必须在排序后的数字后面,但如果我把它作为void Median(),我会丢失排序后的数组。请帮忙!任何帮助是非常赞赏:Java Array标准偏差和中位数

import java.util.Scanner; 
import javax.swing.*; 
public class JScannerO 
{ 
    public JScannerO(){} 
    public JScannerO(int A) 
    { 
     HowMuch = A; 
    } 
    void GenerateNumbers() 
    { 
     int k,Hide; 
     k = 0; 
     while (k < HowMuch) 
     { 
      Hide = (int) (Math.random() * 100); 
      if (Hide > 9 && Hide < 100) 
      { 
       Hanson[k] = Hide; 
       k++; 
      } 
     } 
    } 
    void DisplayNumbers() 
    { 
     int k; 
     for (k = 0; k < HowMuch; k++) 
     { 
      System.out.println("\t\tThe numbers are : " + Hanson[k]); 
     } 
    } 
    void BiggestNumber() 
    { 
     int k,Biggest; 
     Biggest = Hanson[0]; 
     for (k = 0; k < HowMuch; k++) 
     { 
      if (Biggest < Hanson[k]) Biggest = Hanson[k]; 
     } 
     System.out.println("\n\n\t\tThe biggest number is : " + Biggest); 
    } 
    void SmallestNumber() 
    { 
     int k,Smallest; 
     Smallest = Hanson[0]; 
     for (k = 0; k < HowMuch; k++) 
     { 
      if (Smallest > Hanson[k]) Smallest = Hanson[k]; 
     } 
     System.out.println("\n\n\t\tThe Smallest number is : " + Smallest); 
    } 
    void Average() 
    { 
     int k,Sum; 
     double Average; 
     Sum = 0; 
     for (k = 0; k < HowMuch; k++) 
     { 
      Sum = Sum + Hanson[k]; 
     } 
     Average = 1.0 * Sum/HowMuch; 
     System.out.format("\n\n\t\tThe Average number is : %7.2f",Average); 
    } 
    void Sort() 
    { 
     int k,Hide; 
     boolean DidISwap; 
     DidISwap = true; 
     while (DidISwap) 
     { 
      DidISwap = false; 
      for (k = 0; k < HowMuch - 1; k++) 
      { 
       if (Hanson[k] > Hanson[k+1]) 
       { 
        Hide = Hanson[k ]; 
        Hanson[k] = Hanson[k+1]; 
        Hanson[k+1] = Hide ; 
        DidISwap = true; 
       } 
      } 
     } 
     System.out.println("\n\n\n\t\tThe Sorted Numbers : \n"); 
    } 
    private int HowMuch; 
    private int[] Hanson = new int[100]; 
} 

这是通过调用程序

+0

请编辑您的问题,并注意[格式帮助] (http://stackoverflow.com/editing-help)。 –

+0

你是什么意思,你失去阵列?如果你的数组是排序的,你的中位数就是array [array.length/2],如果长度是奇数,并且数组[array.length/2]和array [array.length/2 + 1]的平均值是否为 –

+0

Do我在void Sort()下面嵌套以保持排序的数组?我的印象是,如果我使用void Median(),那么我必须再次对数字进行排序? – user1775694

回答

0

我不明白你的问题运行。

你有一个排序算法,为你做的工作!

你就不能写一个

public int median() { 
    Sort(); 
    return Hanson[Math.floor(Hanson/2)]; 
} 

这将花费你O(N)而不是O(1),但它不容易出错,并且你需要做的事 - 尤其是因为你的“Hanson”数组只有100个,所以我们不能在这一点上关心。作为最后的注释:函数名总是在较低的camelCase中,即它是sort()而不是Sort(),它是calculateSomething()而不是Calculate_Something()或任何其他变体。

这条规则没有任何例外,这会使你的代码更加可读。考虑在Eclipse中安装CheckStyle(http://eclipse-cs.sourceforge.net/)以便在编写时有一个交互式指南风格:-)