求字符串排序算法

panwen516 2008-07-17 07:05:39
求一函数public string StringSort(string str)将字符串str按从小到大排序后重新输出。
如果大虾对自己的算法自信的话,请说出其优势。
谢谢。
...全文
542 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)
  在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力浅显易懂,不失深度和数学严谨性。 《算法导论(原书第3版)》选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在it专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。    第3版的主要变化:    新增了van emde boas树和多线程算法,并且将矩阵基础移至附录。    修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。    移除两章很少讲授的内容:二项堆和排序网络。    修订了动态规划和贪心算法相关内容。    流网络相关材料现在基于边上的全部流。    由于关于矩阵基础和strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。    修改了对knuth-morris-pratt字符串匹配算法的讨论。    新增100道练习和28道思考题,还更新并补充了参考文献。

110,023

社区成员

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

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

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