class ArrayIns
{
private long[] a; // ref to array a
private int nElems; // number of data items
//--------------------------------------------------------------
public ArrayIns(int max) // constructor
{
a = new long[max]; // create the array
nElems = 0; // no items yet
}
//--------------------------------------------------------------
public void insert(long value) // put element into array
{
a[nElems] = value; // insert it
nElems++; // increment size
}
//--------------------------------------------------------------
public void display() // displays array contents
{
for(int j=0; j<nElems; j++) // for each element,
System.out.print(a[j] + " "); // display it
System.out.println("");
}
//--------------------------------------------------------------
public void insertionSort()
{
int in, out; for(out=1; out<nElems; out++) // out is dividing line
{
long temp = a[out]; // remove ed item
in = out; // start shifts at out
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 ed item
} // end for
} // end insertionSort()
//--------------------------------------------------------------
public long median() {
insertionSort();
if(nElems%2==0)
return -1;
else
return a[nElems/2];
}
//--------------------------------------------------------------
} // end class ArrayIns
////////////////////////////////////////////////////////////////
class InsertSortApp
{
public static void main(String[] args)
{
int maxSize = 100; // array size
ArrayIns arr; // reference to array
arr = new ArrayIns(maxSize); // create the array arr.insert(77); // insert 10 items
arr.insert(99);
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(); // display items arr.insertionSort(); // insertion-sort them arr.display(); // display them again
System.out.println(arr.median());
} // end main()
} // end class InsertSortApp给ArrayIns类加一个median()方法,这个方法将返回数组的中间值。(回忆一下,数组中一半数据项比中间值大,一半数据项比中间值小。)
如果直接返回
public long median()
{
return a[nElems / 2];
}
那一共有偶数个项的时候,怎么半呢,比如nElems=10的时候,返回a[5],可a[5]不是这个数组的中间项啊
我是这么写的
public long median() {
insertionSort();
if(nElems%2==0)
return -1;
else
return a[nElems/2];
}
nElems是偶数,返回-1,代表没中间值,不知道可以不?
{
private long[] a; // ref to array a
private int nElems; // number of data items
//--------------------------------------------------------------
public ArrayIns(int max) // constructor
{
a = new long[max]; // create the array
nElems = 0; // no items yet
}
//--------------------------------------------------------------
public void insert(long value) // put element into array
{
a[nElems] = value; // insert it
nElems++; // increment size
}
//--------------------------------------------------------------
public void display() // displays array contents
{
for(int j=0; j<nElems; j++) // for each element,
System.out.print(a[j] + " "); // display it
System.out.println("");
}
//--------------------------------------------------------------
public void insertionSort()
{
int in, out; for(out=1; out<nElems; out++) // out is dividing line
{
long temp = a[out]; // remove ed item
in = out; // start shifts at out
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 ed item
} // end for
} // end insertionSort()
//--------------------------------------------------------------
public long median() {
insertionSort();
if(nElems%2==0)
return -1;
else
return a[nElems/2];
}
//--------------------------------------------------------------
} // end class ArrayIns
////////////////////////////////////////////////////////////////
class InsertSortApp
{
public static void main(String[] args)
{
int maxSize = 100; // array size
ArrayIns arr; // reference to array
arr = new ArrayIns(maxSize); // create the array arr.insert(77); // insert 10 items
arr.insert(99);
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(); // display items arr.insertionSort(); // insertion-sort them arr.display(); // display them again
System.out.println(arr.median());
} // end main()
} // end class InsertSortApp给ArrayIns类加一个median()方法,这个方法将返回数组的中间值。(回忆一下,数组中一半数据项比中间值大,一半数据项比中间值小。)
如果直接返回
public long median()
{
return a[nElems / 2];
}
那一共有偶数个项的时候,怎么半呢,比如nElems=10的时候,返回a[5],可a[5]不是这个数组的中间项啊
我是这么写的
public long median() {
insertionSort();
if(nElems%2==0)
return -1;
else
return a[nElems/2];
}
nElems是偶数,返回-1,代表没中间值,不知道可以不?
解决方案 »
- JTable监听事件
- swt/jface项目发布成产品
- Eclipse做图形化界面用什么插件比较好
- 【第一次发贴】麻烦帮忙写一个共通方法,关于如何验证页面的值是否是Decimal
- java计算文件行数
- 5:不是语句?是什么意思?我把if判断句直接用三目运算符表达,怎么会出现错误呢?
- JDBC链接问题
- 绘制弧形,多边形?
- 我刚刚开始写java程序,碰了一个钉子(巨简单的问题,白送分了)
- Exception in thread "main" java.lang.StackOverflowError
- 学习struts 中遇到一个问题,高手来帮忙解决下(小弟不胜感激,想了几天了)
- 构造方法能否override 和overLoding?
public String median() {
insertionSort();
if(nElems%2==0)
return "no middle item exists";
else
return String.valueOf(a[nElems/2]);
}
这样就清楚多了