Grad-ProbAsk 板


LINE

※ 引述《icrts (居天下之廣居)》之銘言: : ※ 引述《bernachom (Terry)》之銘言: : : 我程式很差...想問一些東西 : 手癢還是回一篇好了. : 這類的問題,建議你先了解這個演算法是在做些什麼 : 然後再去看code,把code對應到程式碼,會比較好懂 : : Void bubble_sort(int list[],int n) #這是在說list[]有n個格子嗎? : 首先這邊的宣告讓我覺得有點詭異, int list[] 傳的是整數, : 但是依據我對程式的了解,這邊應該是要傳array的位址,該改為 : int *list。(但不是很確定,有望##確認) //如果是pseudo code就別管它 int* a 在參數上可以等於int a[] 只有在二維才有一點點差別 : 再來,int n所表示的是每次call這個function同時會傳一個參數 : 給這個function。在這裡依照bubble sort演算法來說傳遞的是list的 : 格子數沒錯,但其實表示的應該是要sort的數為前面n個。 : : { : : int tag,i,j; : : for(i=1;i<n;i++)#i小於array格子就往右移? : 這邊應該說的是,這個找最大值的行為總共做了幾次。 如果單單翻譯程式碼的話 for( i=1; i<n; i++) i初始為1 在接下來的指令部分會在 i<n的條件下執行 i++是在下一倫才開始作。 : : { : : tag=0; : : for(j=1;j<n-i;j++)#這行不太清楚..j<剩下的格子數? j初始為1 下面的程式碼在j< n-i 下完成 同上個人說法,最大值會跑到最後面,所以內層其實不需要繼續往先前已經排過的 數字找了,因為在序列中不可能找到比排過的最大值還大的數。 所以可以直接把排過的部分省略掉。 : 在bubble sort演算法中,上一個for迴圈表示的i是做了第幾次 : 而每做一次最大的那個值就會跑到最後面 : 所以要比較出最大的值,就從第一個開始往後找 : : { : : if list[j]>list[j+1]#為什麼j會>j+1 ??? j > j+1 跟 list[ j ] > list[ j+1 ]不同 下面是取得list的第j個以及第j+1個 : 在此如果有找到前面的值比後面的大的話 : 就將兩數交換位置 : : { : : swap(list[j],list[j+1]); : : tag=1; : : } : : } : 做完一次for(j=..)之迴圈一次可以確保最大值在最後方 : : if tag==0 break; tag被設為1的情形只有在找到list[ j ] > list[ j+1 ]的狀態。 所以當tag保持0的時候,表示整個陣列都是遞增/遞減狀態。 void bubble_sort( int list[], int n ){ int findGreater, i, j; for( i = 0; i < n; i++ ) { /* i為[0 ... n-1] */ findGreater = 0; /* 令findGreater為0 */ for( j = 0; j < n-i; j++ ) { if( list[ j ] > list[ j+1 ] ) { /* 如果第j個 > j+1個 */ swap( list[ j ], list[ j+1 ] ); /* 交換 */ findGreater = 1; /* 標記有出現較大的部分 */ } } if( !findGreater ) { /* 如果整個陣列是遞增狀態則不需排序 */ break; } } } 原po所打的算是pseudo code,因為c語言的陣列不是以1為底的, 但題目沒有說他是c語言,如果是一個simulation language如slx 或者matlab,陣列的確是以1為底。 另外假使是c語言 if 敘述後面要有括號的,所以他不是c語言。 且if tag=1,equal跟assign會混淆的,如果有個程式寫著 if( a = 0 ){ say("you approach Unreachable code ... wtf ?"); } 這如果在考試的時候,評分成了很大的問題吧。 說不定寫了兩種答案的人還會被改考卷的扣分。(今年我想要當作他是assign) (明年我決定當他是equal) --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.123.187
1F:推 bernachom:謝謝您的詳細解說,感謝 04/30 05:34







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP