Re: [問題]傳入物件的修改方式

看板java作者 (sbr)時間15年前 (2009/08/21 15:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《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)
文章代碼(AID): #1AZaTKcC (java)
文章代碼(AID): #1AZaTKcC (java)