package selectionsortintro;
public class SelectionSortIntro {
public static void main(String[] args) {
int nums[] = { 22, 30, 15, 1, 7, 87, 65, 24, 22, 0 };
// print out unsorted list
for (int count = 0; count < nums.length; count++) {
System.out.print(nums[count] + " ");
}
System.out.println("\n---------------------------------");
selectionSort(nums);
// print out sorted list
System.out.println("After sorting using the Selection Sort," + " the array is:");
for (int count = 0; count < nums.length; count++) {
System.out.print(nums[count] + " ");
}
}
public static void selectionSort(int data[]) {
int smallest;
for (int i = 0; i < data.length - 1; i++) {
smallest = i;
// see if there is a smaller number further in the array
for (int index = i + 1; index < data.length; index++) {
if (data[index] < data[smallest]) {
swap(data, smallest, index);
}
}
}
}
public static void swap(int array2[], int first, int second) {
int hold = array2[first];
array2[first] = array2[second];
array2[second] = hold;
}
}
我想在数组中添加随机数量的随机整数,因此选择排序算法会将它们排序。唯一的问题是,我不知道如何使用随机数存储数组,而不是固定数量。如果这令人困惑,那么当你制作阵列时就像:
int [] randomNumbers = new int [20];
其中20是生成的数字量。好吧,我想让用户判断数组中随机生成了多少个数字。所以我想也许可以使用ArrayList?但后来,我对如何使用它来随机添加随机数感到困惑。如果有人能帮助我,那就太棒了
编辑:所以我得到了使用扫描仪的输入,但我真的更喜欢JOptionPane,因为输入对话框看起来好多了,但如果扫描仪是唯一的方法,那很好。所以现在已经完成了,我只需要用随机整数实际填充数组,有人知道怎么做吗?这就是我提出的问题,我的代码出错,如果有人能提供帮助那就太棒了。
Scanner input = new Scanner(System.in);
Scanner s = new Scanner(System.in);
System.out.println("enter number of elements");
int n = s.nextInt();
int nums[]=new int[n];
Random randomGenerator = new Random();
//print out unsorted list
for (int count = 0; count < nums.length; count++) {
System.out.print(nums[count] + " ");
nums[n] = randomGenerator.nextInt(1001);
}
答案 0 :(得分:0)
生成随机整数的三种不同方法,从最简单到实现再到最难
生成随机int [0,max)
(int)(Math.random() * max)
或使用
Random r = new Random();
r.nextInt(max);
生成更随机的数字而不是Java的伪随机生成器的更复杂的方法是查询random.org以获取数据。请注意,这可能需要更长的时间来设置和编码,以及依赖第三方服务器(无论它们有多可靠)
您可以使用random int以随机长度初始化输入数组,然后使用带有for循环的随机数填充值
答案 1 :(得分:0)
根据用户输入添加一个选项来设置数组的大小有点棘手
最简单的编码方法是传入命令行参数并在main方法的args变量中读取它们
另一种读取输入的方法是Scanner类
无论您选择哪种方式,您最终都需要使用
转换为int的String变量String input = args[0]; //or use Scanner
int size = Integer.parseInt(input);
答案 2 :(得分:0)
以下是使用传统数组和JOptionPane的示例:
import javax.swing.*;
import java.util.Random;
public class Random_int_array {
public static void main(String[] args) {
JFrame frame = new JFrame("Total number of integers");
int iTotalCount = Integer.parseInt(JOptionPane.showInputDialog(frame, "What is the total number of integers?"));
int[] array = new int[iTotalCount];
Random randomGenerator = new Random();
for(int i=0; i < iTotalCount; i++){
array[i] = randomGenerator.nextInt(1001);
}
// Now you can do whatever processing you would like to do
// For the sake of this answer, I will just print the numbers
for(int i=0; i < array.length; i++){
System.out.println(array[i]);
}
// We should explicitly call exit because we used a form/window
System.exit(0);
}
}
这是使用带有JOptionPane的ArrayList而不是常规int[] array;
import javax.swing.*;
import java.util.Random;
import java.util.ArrayList;
public class Random_int_array {
public static void main(String[] args) {
JFrame frame = new JFrame("Total number of integers");
int iTotalCount = Integer.parseInt(JOptionPane.showInputDialog(frame, "What is the total number of integers?"));
// Can also be written as: ArrayList<Integer> array = new ArrayList<>();
// in newer versions of Java.
ArrayList<Integer> array = new ArrayList<Integer>();
Random randomGenerator = new Random();
for(int i=0; i < iTotalCount; i++){
array.add(randomGenerator.nextInt(1001));
}
// Now you can do whatever processing you would like to do
// For the sake of this answer, I will just print the numbers
for(int i=0; i < array.size(); i++){
System.out.println(array.get(i));
}
// We should explicitly call exit because we used a form/window
System.exit(0);
}
}
注意:ArrayList
不能使用原始数据类型,因此您必须将其指定为使用Integer
而不是int
。