返回一个数组升序排列后的位置信息--C#程序举例

2023-05-17,,

返回一个数组升序排列后的位置信息--C#程序举例

返回某一个数组升序排序后的位置  比如:{8,10,9,11}排序后应该是{8,9,10,11},但是需要返回{1,3,2,4}   大概记忆里是这么个意思很明显这是一个算法题

同样这是一个面试题做倒是做出来了,但是效率太低了,我都看不上自己做的,感谢面试官给出的提示:这为什么要排序呢?

是的,这根本不需要排序,只需要找出比 对比的元素小的元素个数即可(有了这个思路)可以写程序了

程序方法如下

         /// <summary>
/// 返回一个数组升序后的位置信息
/// </summary>
/// <param name="array"></param>
/// <returns></returns>
private static int[] getAscendingIndex(int[] array)
{
int[] indexArray = new int[array.Length];
for (int i = ; i < array.Length; i++)
{
int index = ;
for (int j = ; j < array.Length; j++)
{
if (array[j]<= array[i])
{
index++;
}
}
indexArray[i] = index;
}
return indexArray;
}

测试程序如下:

         static void Main(string[] args)
{
int[] ArrayTest = new int[]{,,,};
int[] resultArray = getAscendingIndex(ArrayTest);
for (int i = ; i < resultArray.Length; i++)
{
Console.WriteLine(resultArray[i]);
} Console.Read();
}

输出结果:

源程序有需要的可以下载

源代码工程文件下载

各位大侠,如果有更好的方法算法复杂度更低,麻烦给出,感激!欢迎留言

返回一个数组升序排列后的位置信息--C#程序举例的相关教程结束。

《返回一个数组升序排列后的位置信息--C#程序举例.doc》

下载本文的Word格式文档,以方便收藏与打印。