12,10,19,8,7,11,5,6
重新整理后输出
5,6,7,8,10,11,12,19?
请问该怎么写?
算法
  public string newarray(string strserial)
    {
         int m = 0, n = 0, r = 0;
        int totallen = strserial.Length - 1;
        string[] strarry = new string[totallen];
        for (int i = 0; i <= totallen; i++)
        {
            int found = strserial.IndexOf(",", i);
            if (found >= 0)
            {
                r = r + 1;
                string tmp = "";
                  tmp = strserial.Substring(i, found - i);
                            strarry[r] = tmp;
                i = found ;
            }
            else
            {
                r = r + 1;
                string tmp2 = "";
                              tmp2 = strserial.Substring(i);
                if (tmp2 != "")
                    strarry[r] = tmp2;
                break;
            }
        }        int tmpi=0, tmpj=0;        for ( int j = 0; j <= (strarry.Length - 1); j++)
        {
            if (strarry[j]!=null)
            {
                tmpi = int.Parse(strarry[j].ToString());
                for ( int i = j; i <= strarry.Length - 1; i++)
                {
                    if (strarry[i] != null)
                    {
                        tmpj = int.Parse(strarry[i+1].ToString());
                        if (tmpi > tmpj)
                        {
                            strarry[j] = tmpj.ToString();
                            strarry[i + 1] = tmpi.ToString();
                        }
                    }
                }
            }
        }
        string strnewid = "";
        for (int i = 0;i <= strarry.Length  - 1;i++ )
        {
            if(strarry[i]!=null)
                strnewid = strarry[i].ToString() + ",";
        }
        return strnewid;
    }但是这里报错,我实在是解决不了,请大家看看!if (strarry[i] != null)
{
                        tmpj = int.Parse(strarry[i+1].ToString());
                        if (tmpi > tmpj)
                        {
                            strarry[j] = tmpj.ToString();
                            strarry[i + 1] = tmpi.ToString();
                        }
 }
出错的地方

解决方案 »

  1.   

    Array.Sort()好了,反正这个sort就是用的快排
      

  2.   

    帮你改了一下:
    static void Main()
            {
                string str = "12,10,19,8,7,11,5,6";
                string strSort = newarray(str);
                Console.WriteLine(strSort);
            }
            static string newarray(string strserial)
            {
                string[] strarry = strserial.Split(new char[] { ',' });            int tmpi = 0, tmpj = 0;            for (int i = 0; i < strarry.Length; i++)
                {
                    int p=i;
                    tmpi = Convert.ToInt32(strarry[i]);
                    for (int j = i+1; j < strarry.Length; j++)
                    {
                        tmpj = Convert.ToInt32(strarry[j]);
                        if (tmpi > tmpj)
                        {
                            p = j;
                            tmpi = tmpj;
                        }
                    }
                    strarry[p] = strarry[i];
                    strarry[i] = tmpi.ToString();
                }
                string strnewid = "";
                for (int i = 0; i < strarry.Length; i++)
                {
                    strnewid += strarry[i].ToString() + ",";
                }
                return strnewid;
            }
      

  3.   

    lz,我认为你应该听听shrinerain(圣影雨)的意见,在net中,ArrayList的sort方法本身就提供的排序的功能,对基本类型的数据,不需要做任何额外的操作就给你排序了,你为什么一定要自己写一个效率不高的算法??
      

  4.   

    to sdl2005lyx() :自己动下手,我觉得还是好点,虽然方法笨了点,但是我还是想多自己写点东西。同时非常谢谢你和shrinerain(圣影雨)的指点.
    to liujia_0421() :非常感谢!
      

  5.   

    lz:
       你其实没有明白我的真正含意,你仔细研究一下Sort方法,你会发现它非常好,对于基本类型,就不用说了,它还要更强大的功能:它可以比较任何对象,只要我们自己实现一个IComparer接口。这会对复杂对象的排序十分有用。说不定,到时候,你想自己写算法,都可能写不出来的。