Anders Liu (lover_P)的.NET天空

传播知识基于掌握知识,但又高于掌握知识。我要做一个掌握很多知识的传播知识的人!

刘彦博ID:loverP
105217次访问,排名754好友0人,关注者5
loverP的文章
原创 35 篇
翻译 5 篇
转载 0 篇
评论 190 篇
Anders Liu的公告


我写的书


购买途径:
最近评论
mldstk:wow power leveling
l763820708:有-在17号端口
txfast:这些话说的比较实际,其实说学习能力强只是一句空话,因为刚进公司,谁能够认可你的学习能力强,谁又能否定一个人的学习能力?
Wind_Eagle:想不到情人节还有心思写博客呀!不错,我有同感 !
heaso14:照着做了 还是有问题啊...

1>MSVCRT.lib(crtexew.obj) : error LNK2001: 无法解析的外部符号 _WinMain@16
1>C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\a\PureC\Rele……
文章分类
收藏
    相册
    MVP Logo
    文章用图1
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 用Array.Sort对字符串进行排序的问题收藏

    新一篇: CSDN Blog调试信息外泄

    近日在用Array.Sort<string>方法对字符串数组进行排序时遇到了一个郁闷的问题。

    Array.Sort<T>要求T应该事先IComparable<T>接口,而观察System.String类的定义,的确也实现了这个接口。看来不应该有什么问题。但请看下面的代码:

    using System;

    namespace ConsoleApplication1
    {
        
    class Program
        
    {
            
    static void BubbleSort(string[] array)
            
    {
                
    int i, j; //交换标志 
                string temp;
                
    bool exchange;

                
    for (i = 0; i < array.Length; i++//最多做R.Length-1趟排序 
                {
                    exchange 
    = false//本趟排序开始前,交换标志应为假

                    
    for (j = array.Length - 2; j >= i; j--)
                    
    {
                        
    if (System.String.CompareOrdinal(array[j + 1], array[j]) < 0) //交换条件
                        {
                            temp 
    = array[j + 1];
                            array[j 
    + 1= array[j];
                            array[j] 
    = temp;

                            exchange 
    = true//发生了交换,故将交换标志置为真 
                        }

                    }


                    
    if (!exchange) //本趟排序未发生交换,提前终止算法 
                    {
                        
    break;
                    }


                }

            }


            
    static void showStrings(string[] ss)
            
    {
                
    for (int i = 0; i < ss.Length; i++)
                    Console.WriteLine(ss[i]);
            }


            
    static void Main(string[] args)
            
    {
                
    string[] ss1 = 
                    
    {
                        
    "a=1",
                        
    "b=2",
                        
    "a_1=1",
                        
    "b_2=2",
                        
    "a_1_1=1",
                        
    "b_2_2=2",
                        
    "a_1=1_1",
                        
    "b_2=2_2"
                    }
    ;

                
    string[] ss2 = 
                    
    {
                        
    "a=1",
                        
    "b=2",
                        
    "a_1=1",
                        
    "b_2=2",
                        
    "a_1_1=1",
                        
    "b_2_2=2",
                        
    "a_1=1_1",
                        
    "b_2=2_2"
                    }
    ;

                BubbleSort(ss1);
                Console.WriteLine(
    "Use BubbleSort:");
                showStrings(ss1);

                Array.Sort
    <string>(ss2);
                Console.WriteLine(
    "Use Array.Sort<string>:");
                showStrings(ss2);
            }

        }

    }

    其中 BubbleSort 是我自己写的一个简单的冒泡排序法。运行这段代码,得到的结果如下:

    Use BubbleSort:
    a=1
    a_1=1
    a_1=1_1
    a_1_1=1
    b=2
    b_2=2
    b_2=2_2
    b_2_2=2
    Use Array.Sort<string>:
    a_1_1=1
    a_1=1
    a_1=1_1
    a=1
    b_2_2=2
    b_2=2
    b_2=2_2
    b=2
    Press any key to continue . . .

    两种排序得到了截然不同的顺序。

    观察起来,问题貌似出在“_”和“=”的比较上。

    单独比较字符‘_’和‘=’,‘_’是大于‘=’的,也就是说,冒泡排序法排出来的顺序才是正确的。

    难道是Array.Sort<T>有问题?期望高人帮忙解决。

    发表于 @ 2007年01月31日 17:58:00|评论(loading...)|编辑

    旧一篇: ASP.NET存储状态的一个问题

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © Anders Liu