Re: [問題] 資結-bubble程式
※ 引述《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)
討論串 (同標題文章)