問個有關字串排序的問題 |
尚未結案
|
leilamoser
一般會員 ![]() ![]() 發表:1 回覆:3 積分:0 註冊:2004-04-14 發送簡訊給我 |
現在一個二維陣列
例如 [NAME1][23]
[NAME2][24]
[NAME2][15]
[NAME1][17]
[NAME3][12]
[NAME2][21]
想排序成
[NAME1][23]
[NAME1][17]
[NAME2][24]
[NAME2][15]
[NAME2][21]
[NAME3][12]
我試過TStringList中的sort 但他會排成
[NAME1][17]
[NAME1][23]
[NAME2][15]
[NAME2][21]
[NAME2][25]
[NAME3][12]
這個指令還會把第二行再排序一次 但我只要對第一行排序而已
想問問有什麼方法可以解決嗎??因為字串好像不能比大小 謝謝 發表人 - leilamoser 於 2004/04/14 22:44:42
|
GGL
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
字串應該可以比大小吧...
以下是我的測試範例,我是使用STL的sort來做字串的排序
AnsiString name[6];
name[0]="NAME1";
name[1]="NAME2";
name[2]="NAME2";
name[3]="NAME1";
name[4]="NAME3";
name[5]="NAME2";
vector
|
leilamoser
一般會員 ![]() ![]() 發表:1 回覆:3 積分:0 註冊:2004-04-14 發送簡訊給我 |
|
GGL
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
leilamoser
一般會員 ![]() ![]() 發表:1 回覆:3 積分:0 註冊:2004-04-14 發送簡訊給我 |
其實我的程式很小
void(TStringLIst* pData)
{
//排序
pData->Sort();
}
BCB裡面有指令就可以自動排序了
原始資料為
[NAME1][23]
[NAME2][24]
[NAME2][15]
[NAME1][17]
[NAME3][12]
[NAME2][13]
[NAME1][19]
[NAME2][21]
BCB會先排序成下面的情形(就是先排左邊 然後右邊跟著動就好了)
[NAME1][23]
[NAME1][17]
[NAME1][19]
[NAME2][24]
[NAME2][15]
[NAME2][13]
[NAME2][21]
[NAME3][12]
我想要的是上面的結果 但是BCB會繼續做下面一步
(左邊排序好之後 再對右邊屬於同一個名字的數字由小到大排)
[NAME1][17]
[NAME1][19]
[NAME1][23]
[NAME2][13]
[NAME2][15]
[NAME2][21]
[NAME2][24]
[NAME3][12] 這跟有兩個數字的數列 先排左邊 右邊跟著動是一樣的
那是因為字串不能比大小 只有TStringList的Sort可以排大小
|
kuanll
一般會員 ![]() ![]() 發表:5 回覆:6 積分:2 註冊:2002-09-25 發送簡訊給我 |
|
GGL
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
struct my_sort{ String a; String b; }; struct my_sort aa[6]; aa[0].a="NAME1"; aa[0].b="23"; aa[1].a="NAME2"; aa[1].b="24"; aa[2].a="NAME2"; aa[2].b="15"; aa[3].a="NAME1"; aa[3].b="17"; aa[4].a="NAME3"; aa[4].b="12"; aa[5].a="NAME2"; aa[5].b="21"; struct my_sort temp; String max; max=aa[0].a; for(int i=0;i<6;i ) Memo1->Lines->Add("===쥻===" aa[i].a " " aa[i].b); for(int i=0;i<5;i ) { for(int j=i;j<5;j ) if(aa[j].a>aa[j 1].a) { temp=aa[j]; aa[j]=aa[j 1]; aa[j 1]=temp; } } for(int i=0;i<6;i ) Memo1->Lines->Add(aa[i].a " " aa[i].b);我用struct來做....我不知道能不能符合你的要求 |
leilamoser
一般會員 ![]() ![]() 發表:1 回覆:3 積分:0 註冊:2004-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |