求字符串排序算法

panwen516 2008-07-17 07:05:39
求一函数public string StringSort(string str)将字符串str按从小到大排序后重新输出。
如果大虾对自己的算法自信的话,请说出其优势。
谢谢。
...全文
544 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingtianweichong 2011-09-05
  • 打赏
  • 举报
回复
云里雾里。。。。。。。。表示鸭梨很大
xxfxiazai 2008-07-21
  • 打赏
  • 举报
回复
真的是面试题吗,我对生活又有了希望。。。
bindsang 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ojlovecd 的回复:]
C# code
public static string StringSort(string str)
{
char[] chars = str.ToCharArray();
Array.Sort(chars);
string result = string.Empty;
foreach (char c in chars)
result += c.ToString();
return result;
}
[/Quote]
ms自己的Array.Sort用的是二分法,据说效率还是不错的
上面的应该改成Array.Sort<char>(chars); 可能会更好点,原来的应该是比较的对象引用,而不是对象值

字符串的值是不可变的,要想修改字符串变量的值只能重新分配新的内存,把新的值复制进去
result 不断被修改,这个效率不是太好

string result = new string(chars);
我姓区不姓区 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 panwen516 的回复:]
我提的问题是一个面试题,题目就是这样的,
好,我重新给个字符传:“cdeapabje”
根据我提的问题写一个函数将它排序从小到大排序(从a到z的排序),自己写的。
[/Quote]

哎,多此一举~~

static void Main(string[] args)
{
string str = "cdeapabje";
char[] chars = new char[str.Length];
for (int i = 0; i < str.Length; i++)
{
chars[i] = str[i];
}
for (int i = 0; i < str.Length; i++)
{
for (int j = i + 1; j < str.Length; j++)
{
if (chars[i] > chars[j])
{
char temp = chars[j];
chars[j] = chars[i];
chars[i] = temp;
}
}
}
str = new string(chars);
Console.Write(str);
}
panwen516 2008-07-20
  • 打赏
  • 举报
回复
我提的问题是一个面试题,题目就是这样的,
好,我重新给个字符传:“cdeapabje”
根据我提的问题写一个函数将它排序从小到大排序(从a到z的排序),自己写的。
happyboxman 2008-07-19
  • 打赏
  • 举报
回复
我觉得还是你问的不够详细

首先
是否有中文字符?
其次
因为你可能是用于特定场合,否则没必要专门写排序算法
那么你至少应该给点字符串样例,让大家明白字符串有啥特性

我想明确了一些问题才有讨论的基础
tyhAaron 2008-07-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 nattystyle 的回复:]
简化一下:


C# code

char[] chars = str.ToCharArray();
Array.Sort(chars);
return new string(chars);
[/Quote]

在C#中数组Sort()排序效率最高 准
panwen516 2008-07-19
  • 打赏
  • 举报
回复
难道就没有自己写的吗?
jin1002 2008-07-18
  • 打赏
  • 举报
回复
代码没有最好
只有更好
tinalucky 2008-07-18
  • 打赏
  • 举报
回复
ArrayList类有现在的排序方法Sort()
ligangok 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 nattystyle 的回复:]
简化一下:


C# code

char[] chars = str.ToCharArray();
Array.Sort(chars);
return new string(chars);
[/Quote]
ligangok 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ojlovecd 的回复:]
C# code
public static string StringSort(string str)
{
char[] chars = str.ToCharArray();
Array.Sort(chars);
string result = string.Empty;
foreach (char c in chars)
result += c.ToString();
return result;
}
[/Quote]
zzyhuian06142 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 nattystyle 的回复:]
C# code
static string StringSort(string str)
{
char[] chars = str.ToCharArray();
Array.Sort(chars);
return new string(chars);
}
[/Quote]
freewind0521 2008-07-18
  • 打赏
  • 举报
回复
支持!
nattystyle 2008-07-18
  • 打赏
  • 举报
回复

static string StringSort(string str)
{
char[] chars = str.ToCharArray();
Array.Sort(chars);
return new string(chars);
}
nattystyle 2008-07-18
  • 打赏
  • 举报
回复
简化一下:



char[] chars = str.ToCharArray();
Array.Sort(chars);
return new string(chars);

panwen516 2008-07-18
  • 打赏
  • 举报
回复
如果不用微软提供的方法,自己写算法呢?
beikx 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 Beerium 的回复:]
char[] chars = str.ToCharArray();
Array.Sort(chars);
return new string(chars);


这种方法性能比较高

因为用+ 拼接字符串 损失性能很大

我测了一下 一个用了100多毫秒 一个使用1毫秒左右 非常快

当然我的机器比较快 2.4双核 2G RAM
[/Quote]

顶个
大山里的松 2008-07-18
  • 打赏
  • 举报
回复
char[] chars = str.ToCharArray();
Array.Sort(chars);
return new string(chars);


这种方法性能比较高

因为用+ 拼接字符串 损失性能很大

我测了一下 一个用了100多毫秒 一个使用1毫秒左右 非常快

当然我的机器比较快 2.4双核 2G RAM
xuqunying0545 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 RonoTian 的回复:]
引用 4 楼 ojlovecd 的回复:
C# code
public static string StringSort(string str)
{
char[] chars = str.ToCharArray();
Array.Sort(chars);
string result = string.Empty;
foreach (char c in chars)
result += c.ToString();
return result;
}
[/Quote]
加载更多回复(8)

110,925

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧