/**
* 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 发布
本文介绍了一种通过排序实现数组元素随机重排的方法,并提供了完整的Java实现代码。该方法首先为数组分配一个随机数数组,然后根据这个随机数数组对原数组进行排序,从而达到随机重排的效果。
2660

被折叠的 条评论
为什么被折叠?



