對List 數據隨機排序


把1000個數隨機放到1000個位置。

這也就是一個簡單的面試題。覺得比較有意思。就順帶寫一下

 

舉個簡單的例子吧。

學校統一考試的時候  有 1000個人,然后正好有 1000個考試位置,需要隨機排列。那么就有了如下的代碼。

private List<int> getList()
       {

           Random random = new Random();
           List<int> list = new List<int>();


           for (int i = 0; i < 1000; i++)
           {
               //為數組賦值
               list[i] = i + 1;
           }


           for (int i = 0; i <1000; i++)
           {
               int  temp;
               int j = random.Next(0, 999);
               //交換兩個數據的值
               temp = list[j];
               list[j] = list[i];
               list[i] = temp;
           }
           return list;
           
       }

 

這樣我們再改裝一下  假設我們就知道了 這些學生的ID 並且放到了一個list中

就有了如下的

private List<int> getList( List<int> list)
       {

           Random random = new Random();
           for (int i = 0; i <list.Count; i++)
           {
               int  temp;
               int j = random.Next(0, list.Count-1);
               //交換兩個數據的值
               temp = list[j];
               list[j] = list[i];
               list[i] = temp;
           }
           return list;
           
       }

這樣就簡單封裝了獲取隨機順序了。

可以按照   返回的list  安排座位了。  復雜度為O(1000)

 

最后再改裝一下  變成一個common 方法就是終極版啦。任意隨機的list

 

private List<T> getList<T>( List<T> list)
       {

           Random random = new Random();
           for (int i = 0; i <list.Count; i++)
           {
               T  temp;
               int j = random.Next(0, list.Count-1);
               //交換兩個數據的值
               temp = list[j];
               list[j] = list[i];
               list[i] = temp;
           }
           return list;
           
       }
   添加一個static 就可以放到工具方法
image


免責聲明!

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



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