狂奔 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

          其他技術

          生活

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          自強不息


          用心 - 珍惜時間,勇于創造
          主站蜘蛛池模板: 合水县| 马山县| 兴山县| 启东市| 镇安县| 谢通门县| 天门市| 邢台县| 西吉县| 长武县| 手游| 石门县| 玉屏| 常熟市| 广饶县| 五大连池市| 马尔康县| 江永县| 老河口市| 临江市| 巴彦淖尔市| 长岛县| 广宗县| 江永县| 蒙城县| 会昌县| 黔南| 邓州市| 探索| 仁寿县| 敦化市| 同德县| 敖汉旗| 阳西县| 鄯善县| 彭水| 曲沃县| 永定县| 兴安县| 邻水| 彭州市|