11package io .github .dunwu .algorithm .sort ;
22
3+ import org .slf4j .Logger ;
4+ import org .slf4j .LoggerFactory ;
5+
36import java .util .Random ;
47
58/**
69 * @author Zhang Peng
710 */
811public class ArrayUtil {
9- public static void printArray (int [] list , int begin , int end ) {
12+ private static final Logger logger = LoggerFactory .getLogger (ArrayUtil .class );
13+
14+ public static void debugLogArray (int [] list , int begin , int end , String tip ) {
15+ String content = tip + getArrayString (list , begin , end );
16+ if (logger .isDebugEnabled ()) {
17+ logger .debug (content );
18+ }
19+ }
20+
21+ public static String getArrayString (int [] list , int begin , int end ) {
22+ StringBuilder sb = new StringBuilder ();
23+ sb .append ("\n " );
1024 for (int i = 0 ; i < begin ; i ++) {
11- System . out . print ("\t " );
25+ sb . append ("\t " );
1226 }
1327 int count = 0 ;
1428 for (int i = begin ; i <= end ; i ++) {
15- System . out . print (list [i ] + "\t " );
29+ sb . append (list [i ] + "\t " );
1630 if (++count == 10 ) {
17- System . out . println ( );
31+ sb . append ( " \n " );
1832 count = 0 ;
1933 }
2034 }
21- System .out .println ();
35+
36+ return sb .toString ();
2237 }
2338
2439 /**
25- * 随机指定范围内N个不重复的数 在初始化的无重复待选数组中随机产生一个数放入结果中, 将待选数组被随机到的数,用待选数组(len-1)下标对应的数替换
26- * 然后从len-2里随机产生下一个随机数,如此类推
27- *
28- * @param max 指定范围最大值
40+ * 随机指定范围内N个不重复的数。
41+ * <p>在初始化的无重复待选数组中随机产生一个数放入结果中,</p>
42+ * <p>将待选数组被随机到的数,用待选数组(len-1)下标对应的数替换,</p>
43+ * <p>然后从len-2里随机产生下一个随机数,如此类推</p>
2944 * @param min 指定范围最小值
45+ * @param max 指定范围最大值
3046 * @param length 随机数个数
3147 * @return int[] 随机数结果集
3248 */
33- public static int [] randomArray (int min , int max , int length ) {
49+ public static int [] randomNoRepeatArray (int min , int max , int length ) {
3450 int len = max - min + 1 ;
3551
3652 if (max < min || length > len ) {
@@ -56,4 +72,25 @@ public static int[] randomArray(int min, int max, int length) {
5672 }
5773 return result ;
5874 }
75+
76+ /**
77+ * 随机指定范围内N个重复的数。
78+ * @param min 指定范围最小值
79+ * @param max 指定范围最大值
80+ * @param length 随机数个数
81+ * @return 随机数结果集
82+ */
83+ public static int [] randomRepeatArray (int min , int max , int length ) {
84+ int len = max - min + 1 ;
85+
86+ if (max < min || length > len ) {
87+ return null ;
88+ }
89+
90+ int [] result = new int [length ];
91+ for (int i = 0 ; i < result .length ; i ++) {
92+ result [i ] = (int ) (Math .random () * max );
93+ }
94+ return result ;
95+ }
5996}
0 commit comments