我有一道面试题,如下:
一个数组从某位元素到某位元素的倒序。例如:int[] intarry={1,4,2,5,4,7,9},从begin=1[数组第2位] end=4[数组第5位]开始倒序,结果为:intarry={1,7,4,5,2,4,9},写一方法。
-------------------------------------------------
我知道可以用最笨的方法可以做出来,但有没有更好的方法呢?!请大家提供一下思路,谢谢!
一个数组从某位元素到某位元素的倒序。例如:int[] intarry={1,4,2,5,4,7,9},从begin=1[数组第2位] end=4[数组第5位]开始倒序,结果为:intarry={1,7,4,5,2,4,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)
{}
}
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;
}
}
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;
}补上返回值
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);
public static void Reverse(Array array, int index, int length);
// 摘要:
// 反转一维 System.Array 中某部分元素的元素顺序。
//
// 参数:
// array:
// 要反转的一维 System.Array。
//
// index:
// 要反转的部分的起始索引。
//
// length:
// 要反转的部分中的元素数。
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;
}......杯具。
补上返回类型。
一个小算法,写两次,还有疏漏。
真是牛啊。总结的力量是很强滴