返回一個數組升序排列后的位置信息--C#程序舉例


返回一個數組升序排列后的位置信息--C#程序舉例

返回某一個數組升序排序后的位置  比如:{8,10,9,11}排序后應該是{8,9,10,11},但是需要返回{1,3,2,4}   大概記憶里是這么個意思很明顯這是一個算法題

同樣這是一個面試題做倒是做出來了,但是效率太低了,我都看不上自己做的,感謝面試官給出的提示:這為什么要排序呢?

是的,這根本不需要排序,只需要找出比 對比的元素小的元素個數即可(有了這個思路)可以寫程序了

程序方法如下

 1         /// <summary>
 2         /// 返回一個數組升序后的位置信息
 3         /// </summary>
 4         /// <param name="array"></param>
 5         /// <returns></returns>
 6         private static int[] getAscendingIndex(int[] array)
 7         {
 8             int[] indexArray = new int[array.Length];
 9             for (int i = 0; i < array.Length; i++)
10             {
11                 int index = 0;
12                 for (int j = 0; j < array.Length; j++)
13                 {
14                     if (array[j]<= array[i])
15                     {
16                         index++;
17                     }
18                 }
19                 indexArray[i] = index;
20             }
21             return indexArray;
22         }

測試程序如下:

 1         static void Main(string[] args)
 2         {
 3             int[] ArrayTest = new int[4]{8,10,9,11};
 4             int[] resultArray = getAscendingIndex(ArrayTest);
 5             for (int i = 0; i < resultArray.Length; i++)
 6             {
 7                 Console.WriteLine(resultArray[i]);
 8             }
 9 
10             Console.Read();
11         }

輸出結果:

源程序有需要的可以下載

源代碼工程文件下載

各位大俠,如果有更好的方法算法復雜度更低,麻煩給出,感激!歡迎留言

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM