Re: [問題] swap&比大小

看板C_and_CPP (C/C++)作者 (朱子)時間16年前 (2009/03/15 22:19), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《a1013944 (ㄚ春)》之銘言: : #include<stdio.h> : #include<stdlib.h> : #include <string> : #define Swap int(a[j],a[j+1]); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這一行後面都沒用到,可能是多餘的,而且看起來很怪 : int main() : { : int a[5],t,i,j; : for (i=0;i<5;i++) : scanf("%d",&a[i]); : printf("排序前數字為:%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]); : for (i = 0 ; i < 5 ; i++) : { //////////////////////////////////////// : for ( j = 0 ; j < 4 ; j++) : { : if (a[j] > a[j+1]) : {t=a[j];a[j]=a[j+1];a[j+1]=t;}; //////////////////////////////////////// 上面括起來的部份是從左到右,二二相比,若左邊比右邊大,就交換 從左到右做完一次循環之後,就會自然的把最大的一個數換到最右邊(想想看為什麼) 同樣的步驟做第二次循環,就會保證右邊第二個一定是第二大的 重複五個循環,整個序列就會自動排好序了 By the way, 第二個for(j=0;j<4;j++) 改為for(j=0;j<4-i;j++) 可以少做一些多餘的步驟 然後如果有某一次循環中(還沒到第五次)都沒有做交換的話 那就表示整個序列已經排好序,可以直接break不用做後面的循環了 : } : } : printf("排序後數字為:%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]); : system("pause"); : return 0; : } : 這個是我比大小程式碼 : 我之前一直卡在 for (i = 0 ; i < 5 ; i++)以下 : 到 {t=a[j];a[j]=a[j+1];a[j+1]=t;}; : 這邊是我同學幫我改的 : 請問這邊是怎麼運作的?? : 可以解釋給我聽嗎謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.213.158 ※ 編輯: mantour 來自: 140.112.213.158 (03/15 22:21)

03/16 15:31, , 1F
那 i 可以改成 for(i=0;i<4;i++) 嗎
03/16 15:31, 1F
文章代碼(AID): #19lGvf5Q (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #19lGvf5Q (C_and_CPP)