求高效排序方法(在线等)
有一文本里面内容如下
10011001 hello
10011002 ghheh
.....
数目达到数万行
求一快速排序算法,按照每一行的前面八位将这些字符串排序
------解决方案--------------------数据结构里那些不行么? 楼主至少弄个折半查找哈.
ArrayList有没有现成的sort函数?
没有的话建议找个Collection啥的,全部添加进去然后sort
------解决方案--------------------数目达到数万行
-------------------------
这时候不用算法基本就是等死了...
------解决方案--------------------Quick sort,Shell,冒泡,随便整一个
用个二维数组来装每行
------解决方案--------------------sortedDictionary
------解决方案--------------------樓主
其實你根本不必去考慮每行後面的英文
把所有行裝入一個數組
就當沒有這些英文一樣進行排序
因為排序時
它是從第一個字符排起
排完第一個的再考慮第二個
英文的在最後
根本不必理會它們
------解决方案--------------------不知道这样可以不可以……
//假设。。。
string strSrc = "10011002 bcd02\r\n10011001 bcd01\r\n10011003 bcd03 ";
//存储对象
System.Collections.Hashtable htData = new System.Collections.Hashtable();
//存储索引
List <string> listIndex = new List <string> ();
System.Text.RegularExpressions.MatchCollection matchs =
System.Text.RegularExpressions.Regex.Matches(strSrc,@ "(? <ID> \d+) (? <name> \w+) ");
foreach (System.Text.RegularExpressions.Match res in matchs)
{
listIndex.Add(res.Groups[ "ID "].Value);
htData.Add(res.Groups[ "ID "].Value, res.Groups[ "name "].Value);
}
listIndex.Sort();
string strResult = string.Empty;
foreach (string strObj in listIndex)
{
strResult += htData[strObj] + "\r\n ";
}
MessageBox.Show(strResult);