![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
|
主題工具 | 顯示模式 |
|
|
#7 (permalink) |
|
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
不論是氣泡排列 還是xx排列
講到排列 最好是用 陣列去做 數值的交換不用到暫存變數的話 可以用 如果 a 大於 b 然後 a = a xor b b = a xor b a = a xor b 這就是上面 joebin 提到的 用c++的簡寫特性 就可寫成 a^=b^=a^=b; ====================== 氣泡排列是個人認為最簡單易懂 且容易掌控花費時間的一種排列方式 語法:
#include <cstdlib>
#include <iostream>
using namespace std;
void swap(int &i, int &j){
/*
i=i^j;
j=i^j;
i=i^j;
*/
i^=j^=i^=j;
}
int main(int argc, char *argv[])
{
int aTmp[]={3,5,2};
int i,j;
cout << "Before swap...";
cout << "a=" << aTmp[0] << ",b=" << aTmp[1] << ",c=" << aTmp[2] << endl;
cout << "After swap...";
for (i=0; i<(3-1); i++){
for (j=(i+1); j<3; j++){
if (aTmp[i] > aTmp[j]) swap(aTmp[i], aTmp[j]);
}
}
cout << "a=" << aTmp[0] << ",b=" << aTmp[1] <<",c=" << aTmp[2] << endl;
system("pause");
return 0;
}
此帖於 2007-10-20 03:39 PM 被 mini 編輯. |
|
|
送花文章: 2066,
|
|
向 mini 送花的會員:
|
|
|
相似的主題
|
||||
| 主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
| Linux操作系統下乙太網卡的安裝及配置 | psac | 網路疑難應用技術研討區 | 1 | 2004-06-06 05:45 AM |
| 電腦當機後出現藍底白字劃面,倒數100秒後重新開機是那裡出現問題呢? | fishers | 硬體疑難使用問題討論區 | 18 | 2003-04-01 12:57 PM |