狂奔 lion

          自強(qiáng)不息

          如何用java做數(shù)組亂序?

          用java做了一個(gè)數(shù)組亂序,首先建立快速排序算法,排序的依據(jù)是根據(jù)序列中隨機(jī)產(chǎn)生的序列號(hào),序列號(hào)利用map保證在每次排序過(guò)程中只產(chǎn)生一次,不知道有沒(méi)有效率更高的方法,大家咚咚腦筋哈

              
          public static void randomList(List list) {
                  Collections.sort(list, 
          new Comparator(){
                      HashMap map 
          = new HashMap();
                      
          public int compare(Object v1, Object v2) {
                          init(v1);
                          init(v2);
                          
                          
          double n1 = ((Double)map.get(v1)).doubleValue();
                          
          double n2 = ((Double)map.get(v2)).doubleValue();
                          
          if(n1 > n2)
                              
          return 1;
                          
          else if(n1 < n2)
                              
          return -1;
                          
          return 0;
                      }
                      
          private void init(Object v){
                          
          if(map.get(v) == null){
                              map.put(v, 
          new Double(Math.random()));
                          }
                      }
                      
          protected void finalize() throws Throwable {
                          map 
          = null;
                      }
                  });
              }


           @2008 楊一. 版權(quán)所有. 保留所有權(quán)利

          posted on 2006-08-20 11:58 楊一 閱讀(2483) 評(píng)論(1)  編輯  收藏 所屬分類: Java SE

          評(píng)論

          # re: 如何用java做數(shù)組亂序? 2006-08-20 22:53 楊一

          一種更聰明的實(shí)現(xiàn)是向后遍歷列表,從最后一個(gè)元素一直到第二個(gè)元素,將隨機(jī)選擇的元素重復(fù)交換到“當(dāng)前位置”。元素是從列表中隨機(jī)選擇的,從第一個(gè)元素運(yùn)行到當(dāng)前位置(包括)。
          此方法以線性時(shí)間運(yùn)行。而我上面提出的方法將是n*logn
          事實(shí)上,java的Collections中的工具方法shuffle就是這樣實(shí)現(xiàn)的。  回復(fù)  更多評(píng)論   

          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          公告

          本人在blogjava上發(fā)表的文章及隨筆除特別聲明外均為原創(chuàng)或翻譯,作品受知識(shí)產(chǎn)權(quán)法保護(hù)并被授權(quán)遵從 知識(shí)分享協(xié)議:署名-非商業(yè)性使用-相同方式共享 歡迎轉(zhuǎn)載,請(qǐng)?jiān)谵D(zhuǎn)載時(shí)注明作者姓名(楊一)及出處(www.aygfsteel.com/yangyi)
          /////////////////////////////////////////
          我的訪問(wèn)者

          常用鏈接

          留言簿(5)

          隨筆分類(55)

          隨筆檔案(55)

          相冊(cè)

          Java

          其他技術(shù)

          生活

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          自強(qiáng)不息


          用心 - 珍惜時(shí)間,勇于創(chuàng)造
          主站蜘蛛池模板: 班玛县| 五峰| 乌拉特中旗| 滨州市| 鄯善县| 宜都市| 凉城县| 庄河市| 武义县| 宝应县| 茌平县| 五莲县| 绥中县| 额敏县| 望谟县| 洞头县| 和龙市| 仙游县| 台北市| 延边| 饶平县| 仪征市| 合阳县| 高安市| 娱乐| 七台河市| 沅陵县| 赫章县| 卢龙县| 临汾市| 上虞市| 思南县| 黔南| 达日县| 介休市| 乐亭县| 达尔| 共和县| 泸定县| 丹棱县| 济阳县|