我有一道面试题,如下:
一个数组从某位元素到某位元素的倒序。例如:int[] intarry={1,4,2,5,4,7,9},从begin=1[数组第2位] end=4[数组第5位]开始倒序,结果为:intarry={1,7,4,5,2,4,9},写一方法。
-------------------------------------------------
我知道可以用最笨的方法可以做出来,但有没有更好的方法呢?!请大家提供一下思路,谢谢!

解决方案 »

  1.   

    int[] intarry={1,4,2,5,4,7,9}
    var result= from p in intarry
                 orderby p descending
                 select p;
    Array.Sort(intarry);
     Array.Reverse(intarry);public class Comp:IComparer
            {            public int Compare(object x, object y)
                {}
    }
      

  2.   


    public getSortArr(int[] intA,//{1,4,2,5,4,7,9},数组
                      int   bg,  //1,起点位置
                      int   num  //4,终点位置
                     ){
        while(num > bg){
            int t = intA[bg]; 
            intA[bg] = intA[bg + num]; 
            intA[bg++ + num--] = t; 
        }
    }
      

  3.   


    public getSortArr(int[] intA,//{1,4,2,5,4,7,9},数组
                      int   bg,  //1,起点位置
                      int   num  //4,终点位置
                     ){
        while(num > bg){
            int t = intA[bg]; 
            intA[bg] = intA[bg + num]; 
            intA[bg++ + num--] = t; 
        }
        return intA;
    }补上返回值
      

  4.   


                int[] intarry={1,4,2,5,4,7,9};
                int begin = 1;
                int end = 4;            Array.Reverse(intarry, begin , end - begin + 2);            foreach (int i in intarry)
                    Console.WriteLine(i);
      

  5.   

    Array   
    public static void Reverse(Array array, int index, int length);
           // 摘要:
            //     反转一维 System.Array 中某部分元素的元素顺序。
            //
            // 参数:
            //   array:
            //     要反转的一维 System.Array。
            //
            //   index:
            //     要反转的部分的起始索引。
            //
            //   length:
            //     要反转的部分中的元素数。
      

  6.   


    public int[] getSortArr(
        int[] intA,//{1,4,2,5,4,7,9},数组
         int   bg,  //1,起点位置
         int   num  //4,终点位置
         ){
        while(num > bg){
            int t = intA[bg]; 
            intA[bg] = intA[bg + num]; 
            intA[bg++ + num--] = t; 
        }
        return intA;
    }......杯具。
    补上返回类型。
    一个小算法,写两次,还有疏漏。
      

  7.   

    还是c#好,一个Array.Reverse就直接解决。
      

  8.   

    建议看一下http://www.cnblogs.com/kirinboy/archive/2010/04/23/reverse-a-string.html我也是从版主高歌那找到的
      

  9.   

    嗯!这么多的算法。谢谢这么多的网友给我解答,谢谢网友:wuyq11、foren_whb、Peter200694013、xrongzhen,让我收获颇多。
      

  10.   

    http://www.cnblogs.com/kirinboy/archive/2010/04/23/reverse-a-string.html
    真是牛啊。总结的力量是很强滴