作者icrts (居天下之广居)
看板Grad-ProbAsk
标题Re: [问题] 资结-bubble程式
时间Thu Apr 30 01:51:26 2009
※ 引述《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
1F:推 bernachom:谢谢您的帮忙,很清楚,谢谢 04/30 02:13
※ 编辑: icrts 来自: 218.174.33.235 (04/30 02:23)