返回信息流请实现Java类MySortedArray的insertByOrder方法:
要求1)如可正常插入,返回插入点在数组中的序号;2)如插入时数据已经是100个了,则判断为越界,返回-1;3)提醒:当数组为空,插入第一个数时的处理比较特殊。
public class MySortedArray {
int[] mArray; //存储所有数据的数组,任何时候都应该是升序的。
int mLength; //mArray[]中已有数据的长度。
MySortedArray(){
mArray = new int[100];
mLength=0;
}
int insertByOrder (int iKey){
//此处代码实现将iKey插入到mArray中正确的位置。
//请补充完整这里的代码,请在答题纸上作答。
}
}
public class MySortedArrayTest {
public static void main(String[] args) {
MySortedArray a = new MySortedArray();
a.insertByOrder(5); //该行执行后,a.mArray[]:5
a.insertByOrder(3); //该行执行后,a.mArray[]:3,5
a.insertByOrder(4); //该行执行后,a.mArray[]:3,4,5
a.insertByOrder(1); //该行执行后,a.mArray[]:1,3,4,5
a.insertByOrder(2); //该行执行后,a.mArray[]:1,2,3,4,5
for (int i=0;i<a.mLength;i++)
System.out.print(a.mArray[i]+",");
System.out.println();
}
}
执行该程序结果:1,2,3,4,5,
这是一条镜像帖。来源:北邮人论坛 / java / #13850同步于 2010/4/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求救
lrxbaby
2010/4/1镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
public int insertByOrder (int iKey)
{
//插入位从下标0开始
int breakIndex = -1;
int temp1 = 0;
int temp2 = 0;
if(mLength>=100)
{
return -1;
}
if(mLength == 0)
{
mArray[0] = iKey;
mLength = 1;
System.out.println("排序键入值为:"+iKey);
System.out.println("插入到第0位");
System.out.println("排序后mLength:"+mLength);
return 0;
}
for(int i=0;i<mLength;i++)
{
if(mArray[i]>=iKey )
{
if(i==0)
{
breakIndex = 0;
break;
}
if(mArray[i-1]<=iKey)
{
breakIndex = i;
break;
}
}
}
temp1 = iKey;
temp2 = mArray[breakIndex];
for(int i=breakIndex;i<mLength-1;i++)
{
mArray[i] = temp1;
temp1 = temp2;
temp2 = mArray[i+1];
}
mArray[mLength-1] = temp1;
mArray[mLength] = temp2;
///debug
System.out.println("开始排序!!!!!!!!!!!");
System.out.print("插入前排序为:");
for (int i=0;i<mLength;i++)
System.out.print(mArray[i]+",");
System.out.println("");
System.out.println("排序键入值为:"+iKey);
System.out.println("插入到第"+breakIndex+"位");
System.out.print("插入后排序为:");
for (int i=0;i<mLength+1;i++)
System.out.print(mArray[i]+",");
System.out.println("");
System.out.println("排序后mLength:"+mLength);
System.out.println("排序完成!!!!!!!!!!!");
///////
mLength++;
return breakIndex;
}
我是打酱油的。
int insertByOrder (int iKey){
if(mLength==100) return -1;
for(int i=mLength-1;i>=0;i--) {
mArray[i+1] = mArray[i];
}
mArray[i+1]=iKey;
mLength++;
return i+1;
}