排序问题 高手进

jackydeng 2007-04-26 11:29:40
比如
B C D E F
15 10 20 11 10
排序完后结果为:
C F E B D
10 10 11 15 20

就是如何实现上面的字母标记绑定到数字??
...全文
1017 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackydeng 2007-04-28
  • 打赏
  • 举报
回复
再次谢谢大家
如果还有好的建议,欢迎!!
jackydeng 2007-04-28
  • 打赏
  • 举报
回复
分很少 不好意思
jackydeng 2007-04-28
  • 打赏
  • 举报
回复
谢谢大家了 问题基本解决
jiatong1981 2007-04-28
  • 打赏
  • 举报
回复
个人认为

在数字相同的时候 只是按照源数据的先后顺序来排序的 而不需要通过字母再排序一

次 所有的排序依据只和数字列有关
wxgwxgwxg 2007-04-28
  • 打赏
  • 举报
回复
晕 哪来的高手 初来乍到 正好以前遇到过这样的问题。高手 哪有空到处贴代码 高手张张嘴 就Ok了  呵呵 我在csdn上还没得过分呢 好不容易逮到机会了
yc_8301 2007-04-28
  • 打赏
  • 举报
回复
晕。高手已经给出代码了。呵呵
yc_8301 2007-04-28
  • 打赏
  • 举报
回复
加个判断就OK了
wxgwxgwxg 2007-04-28
  • 打赏
  • 举报
回复
好像是有问题,我没注意 还有字母顺序
好像就可以:
TestSort.Add(new myCls("F", 10));

TestSort.Add(new myCls("B", 15));
TestSort.Add(new myCls("C", 10));
TestSort.Add(new myCls("D", 20));
TestSort.Add(new myCls("E", 11));

不过显然不能这样解决
我想应该修改myReverserClass_Num就可以

public class myReverserClass_Num : IComparer
{
int IComparer.Compare(Object x, Object y)
{
if (((myCls)x).Num == ((myCls)y).Num)
{

return ((new CaseInsensitiveComparer()).Compare(((myCls)x).Name, ((myCls)y).Name));
}
else
{
return ((new CaseInsensitiveComparer()).Compare(((myCls)x).Num, ((myCls)y).Num));
}
}
}
duke1111 2007-04-28
  • 打赏
  • 举报
回复
哦,他是想先比较数字~~数字排完了有相同的再比较字母大小。
jiatong1981 2007-04-28
  • 打赏
  • 举报
回复
排序后F在C的前面
yc_8301 2007-04-28
  • 打赏
  • 举报
回复
学习中。。。。
不服高人有罪呀。
jackydeng 2007-04-28
  • 打赏
  • 举报
回复
好的 先谢谢了 我去试试
wxgwxgwxg 2007-04-28
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static ArrayList TestSort = new ArrayList();
static void Main(string[] args)
{
TestSort.Add(new myCls("B", 15));
TestSort.Add(new myCls("C", 10));
TestSort.Add(new myCls("D", 20));
TestSort.Add(new myCls("E", 11));
TestSort.Add(new myCls("F", 10));

myReverserClass_Name theSort_Name = new myReverserClass_Name();
myReverserClass_Num theSort_Num = new myReverserClass_Num();
TestSort.Sort(theSort_Name);
Printout();
TestSort.Sort(theSort_Num);
Printout();
Console.ReadLine();
}
static public void Printout()
{
foreach (myCls thecls in TestSort)
Console.WriteLine("Name:" + thecls.Name + "; Num:" + thecls.Num + ";");
}
}
public struct myCls
{
public string Name;
public int Num;
public myCls(string name, int num)
{
this.Name = name;
this.Num = num;
}
}
public class myReverserClass_Num : IComparer
{
int IComparer.Compare(Object x, Object y)
{
return ((new CaseInsensitiveComparer()).Compare(((myCls)x).Num, ((myCls)y).Num));
}
}
public class myReverserClass_Name : IComparer
{
int IComparer.Compare(Object x, Object y)
{
return ((new CaseInsensitiveComparer()).Compare(((myCls)x).Name, ((myCls)y).Name));
}
}

}

跑一下看看
jackydeng 2007-04-28
  • 打赏
  • 举报
回复
继续讨论
alldj 2007-04-27
  • 打赏
  • 举报
回复
Convert.ToString(num)+Char
hawking106123 2007-04-27
  • 打赏
  • 举报
回复
可以定义一个类,然后是两个成员.接着是一个类的数组.
QuinsonYue 2007-04-27
  • 打赏
  • 举报
回复
人气爆 特地进来瞧瞧~
SpaceTime 2007-04-27
  • 打赏
  • 举报
回复
Arraylist的sort方法就可以实现了
wwiilla 2007-04-27
  • 打赏
  • 举报
回复
CArray
CList
jackydeng 2007-04-27
  • 打赏
  • 举报
回复
cnwolfs(cnwolfs) 能否具体点,或者举个例子 谢谢

对了 SortedList无法添加有重复的数据 要怎么解决呢?
加载更多回复(29)

111,125

社区成员

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

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

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