예제 #1
0
 static public void RandomShuffle <T>(IList <T> list, RandomShuffleFunc func)
 {
     RandomShuffle(IteratorUtil.Begin(list), IteratorUtil.End(list), func);
 }
예제 #2
0
        static public void RandomShuffle <T>(RandomAccessIterator <T> begin, RandomAccessIterator <T> end, RandomShuffleFunc func)
        {
            if (begin.Equals(end))
            {
                return;
            }

            begin = IteratorUtil.Clone(begin);
            for (RandomAccessIterator <T> iter = IteratorUtil.AdvanceCopy(begin, 1); !iter.Equals(end); iter.MoveNext())
            {
                begin.Position = func(iter.Position + 1);
                IteratorUtil.Swap(iter, begin);
            }
        }