狂奔 lion

          自強不息

          如何用java做數組亂序?

          用java做了一個數組亂序,首先建立快速排序算法,排序的依據是根據序列中隨機產生的序列號,序列號利用map保證在每次排序過程中只產生一次,不知道有沒有效率更高的方法,大家咚咚腦筋哈

              
          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 楊一. 版權所有. 保留所有權利

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

          評論

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

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

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

          導航

          公告

          本人在blogjava上發表的文章及隨筆除特別聲明外均為原創或翻譯,作品受知識產權法保護并被授權遵從 知識分享協議:署名-非商業性使用-相同方式共享 歡迎轉載,請在轉載時注明作者姓名(楊一)及出處(www.aygfsteel.com/yangyi)
          /////////////////////////////////////////
          我的訪問者

          常用鏈接

          留言簿(5)

          隨筆分類(55)

          隨筆檔案(55)

          相冊

          Java

          其他技術

          生活

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          自強不息


          用心 - 珍惜時間,勇于創造
          主站蜘蛛池模板: 屏东市| 轮台县| 荣成市| 资兴市| 达拉特旗| 成都市| 芜湖市| 筠连县| 阿克苏市| 临江市| 阆中市| 张掖市| 锡林浩特市| 南城县| 梅州市| 天水市| 津南区| 北辰区| 吉木乃县| 剑河县| 左云县| 井冈山市| 辽阳县| 金坛市| 阜新| 宜州市| 衢州市| 察哈| 宁化县| 北流市| 青阳县| 商洛市| 饶河县| 容城县| 兰考县| 思茅市| 石林| 深泽县| 赞皇县| 汉川市| 万源市|