序言
学完c语言之后,我直接速学java,在初阶时候碰到一个案例:如何将数组随机排序。
原理
我们可以设定一个随机数,在数组范围内,这是我们数组的索引值,然后在我们遍历数组的时候,每个数组的位置都和索引值对应数组的位置对换,就可以实现随机排序了,是不是听着很简单,但是需要注意java产生随机数和c不一样,java可以直接用random的包直接实现(但我们要创建一个对象),还有读取用户输入的值也不一样,这里我是用scanner。
步骤
首先直接开讲原理,我们的功能是先创建一个动态数组,让用户自行填入数值,接着将用户输入的数值打印出来,这是第一步,直接上代码去理解:
package com.jx.test1;
import java.util.Scanner;
//实现数组的随机排序
public class test1 {
public static void main(String[] args) {
//创建动态数组
int arr[]=new int[5];
//用户输入数组值,遍历
Scanner sc = new Scanner(System.in);//用于读取用户输入值
for (int i=0;i<arr.length;i++) {
System.out.println("please tell me the "+i+1+" num:");
int code = sc.nextInt();
arr[i]=code;
}
//输出用户输入的数组
System.out.println("well,your code is:\n");
for (int i=0;i< arr.length;i++) {
System.out.println(arr[i]);
}
}
}
随后就是设立索引值,这里用random,注意一下数组我们设立的是5个元素,序号是0-4,因此只需要随机0-4的数即可,最后优化一下的代码是这样的:
package com.jx.test1;
import java.util.Random;
import java.util.Scanner;
//实现数组的随机排序
public class test1 {
public static void main(String[] args) {
//创建动态数组
int arr[] = new int[5];
//用户输入数组值,遍历
Scanner sc = new Scanner(System.in);//用于读取用户输入值
for (int i = 0; i < arr.length; i++) {
System.out.println("please tell me the " + (i + 1) + " num:");
int code = sc.nextInt();
arr[i] = code;
}
//输出用户输入的数组
System.out.println("well,your code is:");
for (int i = 0; i < arr.length; i++) {
System.out.print(" ");
System.out.print(arr[i]);
}
//随机生成索引值
Random ra = new Random();
for (int i=0;i< arr.length;i++) {
int index = ra.nextInt(arr.length);//0-4随机数
int tem = 0;
tem = arr[i];
arr[i] = arr[index];
arr[index] = tem;
}
System.out.println("your code is random sorted:");
for (int i =0;i< arr.length;i++)
{
System.out.print(" ");
System.out.print(arr[i]);
}
}
}
运行结果
请原谅我的蹩脚英文哈哈哈