110,534
社区成员
发帖
与我相关
我的任务
分享
int[] pri = { 1100, 1400, 1300 };
int[] keys = (int[])pri.Clone();
int[] keys = { 1100, 1400, 1300, 1100 };
int[] values = { 1, 2, 3, 4 };
Array.Sort(keys, values);
foreach (int item in values)
{
Console.WriteLine(item);
}
int[] keys = { 1100, 1400, 1300 };
int[] values = { 1, 2, 3 };
Array.Sort(keys, values);
foreach (int item in values)
{
Console.WriteLine(item);
}
public static int[] GetRank(int[] input)
{
ArrayList pairs = new ArrayList();
int pos = 0;
foreach (int value in input)
{
pairs.Add(new RankPair(value, pos++));
}
pairs.Sort();
int[] ranks = new int[input.Length];
int rank = 1;
foreach (RankPair pair in pairs)
{
ranks[(pair as RankPair).position] = rank++;
}
return ranks;
}
public class RankPair : IComparable
{
public int position = 0;
public int value = 0;
public RankPair(int value, int pos)
{
position = pos;
this.value = value;
}
#region IComparable Members
public int CompareTo(object obj)
{
return value.CompareTo((obj as RankPair).value);
}
#endregion
}
static void Main()
{
int[] r = GetRanks(new int[] { 1, 3, 2, 4, 9 });
///// r = { 1, 3, 2, 4, 5 }
}
static int[] GetRanks(int[] array)
{
List<Point> pairs = new List<Point>();
for(int i=0; i<array.Length; i++)
{
pairs.Add( new Point(i, array[i]));
}
pairs.Sort(delegate(Point a, Point b) { return a.Y - b.Y; });
int[] ranks = new int[array.Length];
for (int i = 0; i < pairs.Count; i++)
{
ranks[pairs[i].X] = i;
}
return ranks;
}
int[] pri = { 1100, 1400, 1300 };
int[] temp = new int[pri.Length];
Array.Copy(pri, temp, pri.Length);
Array.Sort(temp);
int[] rank = new int[pri.Length];
for (int i = 0; i < rank.Length; i++)
rank[i] = Array.IndexOf(pri, temp[i]) + 1;
foreach (int i in pri)
Console.WriteLine(i);
foreach (int i in rank)
Console.WriteLine(i);