Re: [問題]傳入物件的修改方式
※ 引述《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)
討論串 (同標題文章)