立即参加编程课程,我感到很困惑。我们基本上需要声明一个中位数方法,它将找到数组对象中包含的值的中位数,我不知道在这种情况下如何操作它。此外,我不知道如何分离阵列的各个部分或如何获得特定的"中间块"数组的排序,有点像合并排序,但我们还没有接近那个。
我整个星期都在努力解决这个问题。这是我的所有代码。 任何提示或提示都会令人惊讶。谢谢
class ArrayIns {
private long[] a;
private int nElems; // number of data items
public ArrayIns(int max) { // constructor
a = new long[max]; // create array
nElems = 0; // no items yet
}
public void insert(long value) {
a[nElems] = value;
nElems++;
}
public void display() {
for(int j=0; j<nElems; j++)
System.out.print(a[j] + " ");
System.out.println("");
}
public void insertionSort() {
int in, out;
for(out=1; out<nElems; out++) { // out is dividing the line
long temp = a[out]; // remove marked item
in = out; // start shifts at our
while(in>0 && a[in-1] >= temp) { // until one is smaller,
a[in] = a[in-1]; // shift item to right
--in; // go left one position
}
a[in] = temp; // insert marked item
} // end of for statement
} // end of insertion sort
} // end of ArrayIns
class InsertSortApp {
public static void main(String[] args) {
int maxSize = 100;
ArrayIns arr;
arr = new ArrayIns(maxSize);
arr.insert(77); // insert 10 items
arr.insert(99); // 10 is also even :)
arr.insert(44);
arr.insert(55);
arr.insert(22);
arr.insert(88);
arr.insert(11);
arr.insert(00);
arr.insert(66);
arr.insert(33);
arr.display();
arr.insertionSort();
arr.display();
} // end of main()
} // end of InsertSortApp class
答案 0 :(得分:1)
首先,您是否测试了排序算法以确定其有效?它是否正确地对数组进行排序?
如果排序算法正常工作,那么获得中位数很简单。首先,确定它是否具有奇数或偶数个元素。如果它具有奇数个元素,则中位数是长度为2的元素。如果它具有偶数个元素,则中位数是元素的平均长度/ 2 - 1和长度/ 2。
答案 1 :(得分:0)
方法中位数;
- 将数组作为输入
- sort content of array
- find length of array
- find the index of middle
- 返回具有中间索引的数组的值
答案 2 :(得分:-1)
将以下方法添加到ArrayIns
public long median() {
if (nElems % 2 == 0) {
int index1 = nElems/2-1;
return (a[index1]+a[index1+1]) / 2;
}
return a[nElems/2];
}
排序后从main()调用:
long median = arr.median();