Java十大经典排序算法的实现图解
350
2022-08-19
Java中的随机数Random
一个用于生成随机数的类
具体用法:
//创建随机数对象
Random random = new Random();
//随机产生一个int类型取值范围内的数字。
int num1 = random.nextInt();
System.out.println(num1);
//产生一个[0-100]之间的随机数
int num2 = random.nextInt(101);
System.out.println(num2);//不包括101
写一个不含重复数字的随机数组
第一种:
int[] num = new int[5];
boolean flag = true;
Random random = new Random();
for (int i = 0; i < num.length; i++) {
int a = random.nextInt(5);
for (int j = i - 1; j >= 0; j--) {//当i == 0 的时候这一步不执行
if (a == num[j]) {
flag = false;
}
}
if (flag) {
num[i] = a;
} else {
i--;
flag = true;
}
}
System.out.println(Arrays.toString(num));
第一种方法的改进:
public static void main(String[] args) {
int[] num = new int[5];
Random random = new Random();
int index = 0;
while (index < num.length) {
int a = random.nextInt(5);
if (contains(num, index, a)) { //把判断有没有变成了一个方法
num[index++]qrVPd = a;
}
}
System.out.println(Arrays.toString(num));
}
public static boolean contains(int[] a, int index, int temp) {
for (int i = index - 1; i >= 0; i--) {
if (temp == a[i]) {
return falhttp://se;
}
}
return true;
}
第二种:
不推荐这种方法,虽然使用了Arrays自带的方法 ,但是这个方法的除最后一个元素以外的元素都是排好序的
这种随机有点不严谨
public static void main(String[] args) {
int[] a = new int[5];
Random random = newhttp:// Random();
int index = -1;
while(index < a.length -1){
int b = random.nextInt(5);
if(contains(a,b,index)){
a[++index] = b;
}
}
System.out.println(Arrays.toString(a));
}
public static boolean contains(int[] a , int b , int index){
if (index < 0){
return true;
}
Arrays.sort(a,0,index + 1);//下标为[0,index+1)的数组排序 不包含index+1
return Arrays.binarySearch(a,0,index + 1,b) < 0;//二分法查找下标为[0,index+1)范围内是否包含b
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~