全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1707
推到 Plurk!
推到 Facebook!

問個有關字串排序的問題

尚未結案
leilamoser
一般會員


發表:1
回覆:3
積分:0
註冊:2004-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-14 22:35:45 IP:140.113.xxx.xxx 未訂閱
現在一個二維陣列 例如 [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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-15 03:09:41 IP:211.76.xxx.xxx 未訂閱
字串應該可以比大小吧... 以下是我的測試範例,我是使用STL的sort來做字串的排序 AnsiString name[6]; name[0]="NAME1"; name[1]="NAME2"; name[2]="NAME2"; name[3]="NAME1"; name[4]="NAME3"; name[5]="NAME2"; vector v(name, name 6); sort(v.begin(),v.end()); for(int i=0;i<6;i ) Memo1->Lines->Add(name[i]); 你在改一下應該就可以了..
leilamoser
一般會員


發表:1
回覆:3
積分:0
註冊:2004-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-15 08:30:51 IP:140.113.xxx.xxx 未訂閱
不好意思 可能我寫的沒有很清楚 TStringList裡面的sort可以用字串比大小 但是他會對左邊那行排序完再對右邊那行排序 可是我只要對左邊那行排序 右邊那行跟著動就好
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-15 14:17:41 IP:211.76.xxx.xxx 未訂閱
可以請你把片段程式碼po出來嗎?我現在不是很清楚你的要求是怎樣...
leilamoser
一般會員


發表:1
回覆:3
積分:0
註冊:2004-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-15 18:52:42 IP:140.113.xxx.xxx 未訂閱
其實我的程式很小 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-15 20:53:47 IP:211.74.xxx.xxx 未訂閱
StringList的sort會把所有string的內容加以排序,好像沒辦法只排序前半段 ! 或許可以把資料分成兩個部分,紀錄排序的index,應該就可以只排序前半段了!
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-16 00:13:26 IP:211.76.xxx.xxx 未訂閱
 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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-16 16:18:25 IP:140.113.xxx.xxx 未訂閱
謝謝GGL大大的解答 問題解決了 太感動 謝謝
系統時間:2024-07-09 1:31:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!