在一个List数组中,假设需要加数组进行升序,如果需要获取数组升序后,数组元素会排序后的位置,可以使用以下方法。
class Program
{
static void Main(string[] args)
{
List<int> TestList = new List<int>();
TestList.Add(3);
TestList.Add(5);
TestList.Add(1);
TestList.Add(6);
TestList.Add(4);
for(int i=0;i< TestList.Count;i++)
{
Console.WriteLine("TestList["+i+"]:"+ TestList[i]+"的升序后的位置是:" + getAscendingIndex(TestList)[i]);
}
Console.ReadLine();
}
/// <summary>
/// 返回一个数组升序后的位置信息
/// </summary>
/// <param name="array"></param>
/// <returns></returns>
static int[] getAscendingIndex(List<int> array)
{
int[] indexArray = new int[array.Count];
for (int i = 0; i < array.Count; i++)
{
int index = 0;
for (int j = 0; j < array.Count; j++)
{
if (array[j] <= array[i])
{
index++;
}
}
indexArray[i] = index;
}
return indexArray;
}
}
运行结果:
TestList[0]:3的升序后的位置是:2
TestList[1]:5的升序后的位置是:4
TestList[2]:1的升序后的位置是:1
TestList[3]:6的升序后的位置是:5
TestList[4]:4的升序后的位置是:3
注意的是:这里的排序是从1开始计算的,后面使用时注意数组溢出,当然也是可以从0开始计数的,将if (array[j] <= array[i]) 改为 if (array[j] < array[i])就可以,运行结果:
TestList[0]:3的升序后的位置是:1
TestList[1]:5的升序后的位置是:3
TestList[2]:1的升序后的位置是:0
TestList[3]:6的升序后的位置是:4
TestList[4]:4的升序后的位置是:2
所以,这样出来的数据就可以直接使用,不用担心溢出的问题啦!
网友评论