/** * Introduction to Algorithms, Second Edition * 5.3 RANDOMIZE-IN-PLACE * @author 土豆爸爸 * */ public class RandomizeInPlace { /** * 数组随机重排 * @param array 待重排数组 */ public static void permute(int[] array) { for(int i = 0; i < array.length; i++) { //生成一个从i到n的随机数 int randomIndex = i + (int)(Math.random() * (array.length - i)); //交换 int temp = array[i]; array[i] = array[randomIndex]; array[randomIndex] = temp; } } } import junit.framework.TestCase; public class RandomizeInPlaceTest extends TestCase { public void testPermute() { int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < array.length; i++) { int[] clone = array.clone(); RandomizeInPlace.permute(clone); print(clone); } } private void print(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i]); System.out.print(" "); } System.out.println(); } }
算法导论示例-RandomizeInPlace
最新推荐文章于 2024-03-13 04:00:00 发布