/** * Introduction to Algorithms, Second Edition * 5.3 PERMUTE-BY-SORTING * @author 土豆爸爸 * */ public class PermuteBySorting { /** * 数组随机重排 * @param array 待重排数组 */ public static void permute(int[] array) { //生成一个随机的数组 int[] p = new int[array.length]; for(int i = 0; i < array.length; i++) { p[i] = (int)(Math.random() * Math.pow(array.length, 3)); } //根据随机数组对目标数据进行排序 sort(array, p); } /** * 根据p对array重排 * @param array 待重排数组 * @param p 随机数组 */ private static void sort(int[] array, int[] p) { for (int j = 1; j < p.length; j++) { int key = p[j]; int i = j - 1; while (i >= 0 && p[i] > key) { p[i + 1] = p[i]; i--; } p[i + 1] = key; int temp = array[j]; array[j] = array[i + 1]; array[i + 1] = temp; } } } import junit.framework.TestCase; public class PermuteBySortingTest 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(); PermuteBySorting.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(); } }
算法导论示例-PermuteBySorting
最新推荐文章于 2021-05-24 17:28:54 发布