Re: [問題] 資結-bubble程式

看板Grad-ProbAsk作者 (居天下之廣居)時間15年前 (2009/04/30 01:51), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《bernachom (Terry)》之銘言: : 我程式很差...想問一些東西 手癢還是回一篇好了. 這類的問題,建議你先了解這個演算法是在做些什麼 然後再去看code,把code對應到程式碼,會比較好懂 : Void bubble_sort(int list[],int n) #這是在說list[]有n個格子嗎? 首先這邊的宣告讓我覺得有點詭異, int list[] 傳的是整數, 但是依據我對程式的了解,這邊應該是要傳array的位址,該改為 int *list。(但不是很確定,有望神人確認) //如果是pseudo code就別管它 再來,int n所表示的是每次call這個function同時會傳一個參數 給這個function。在這裡依照bubble sort演算法來說傳遞的是list的 格子數沒錯,但其實表示的應該是要sort的數為前面n個。 : { : int tag,i,j; : for(i=1;i<n;i++)#i小於array格子就往右移? 這邊應該說的是,這個找最大值的行為總共做了幾次。 : { : tag=0; : for(j=1;j<n-i;j++)#這行不太清楚..j<剩下的格子數? 在bubble sort演算法中,上一個for迴圈表示的i是做了第幾次 而每做一次最大的那個值就會跑到最後面 所以要比較出最大的值,就從第一個開始往後找 : { : if list[j]>list[j+1]#為什麼j會>j+1 ??? 在此如果有找到前面的值比後面的大的話 就將兩數交換位置 : { : swap(list[j],list[j+1]); : tag=1; : } : } 做完一次for(j=..)之迴圈一次可以確保最大值在最後方 : if tag=0 break; : } : } : 麻煩幫忙說明一下了 : 謝謝幫忙 希望有幫到忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.174.37.215

04/30 02:13, , 1F
謝謝您的幫忙,很清楚,謝謝
04/30 02:13, 1F
※ 編輯: icrts 來自: 218.174.33.235 (04/30 02:23)
文章代碼(AID): #19-9EV94 (Grad-ProbAsk)
文章代碼(AID): #19-9EV94 (Grad-ProbAsk)