作者sbrhsieh (sbr)
看板java
标题Re: [问题]传入物件的修改方式
时间Fri Aug 21 15:05:54 2009
※ 引述《vencil (vencs)》之铭言:
: 新手一枚,想请问一下板上的前辈问题
: 在练习程式的时候发现,若是将自行定义的类别物件传入方法中时
: 似乎在方法中所做的修改没有办法对传入的物件造成改变
: 想请问一下为什麽造成这种情形跟如何修改
: 谢谢大家
private static void QuickSortWork(ICanCompare[] objs, int left, int
right){
if(objs.length > 2){
ICanCompare pivot = objs[right];
int i = left - 1;
int j = right;
ShortLoop : for(;;){
while(objs[++i].Compare(pivot) > 0)
while(objs[--j].Compare(pivot) < 0)
if(i < j){
ICanCompare temp = objs[i];
objs[i] = objs[j];
objs[j] = temp;
}
else break ShortLoop;
}
ICanCompare temp = pivot;
pivot = objs[i];
objs[i] = temp;
QuickSortWork(objs, left, i - 1);
QuickSortWork(objs, i + 1, right);
}
}
绿色部分等效於:
while(objs[++i].Compare(pivot) > 0) {
while(objs[--j].Compare(pivot) < 0) {
if(i < j){
ICanCompare temp = objs[i];
objs[i] = objs[j];
objs[j] = temp;
}
else {
break ShortLoop;
}
}
}
仔细想想看这段码在做什麽,我想他并不符合你心中所要实做的演算流程。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.142.250
※ 编辑: sbrhsieh 来自: 218.173.142.250 (08/21 15:07)
※ 编辑: sbrhsieh 来自: 218.173.142.250 (08/21 15:14)