【发布时间】:2017-03-11 04:10:39
【问题描述】:
我一直在解决这个问题:
创建一个包含 10 个随机整数的数组、一个包含 1,000 个随机整数的数组以及一个包含一百万 (1,000,000) 个随机整数的数组。 对于每个数组: 显示数组的前十个元素。 调用数组的选择排序。 显示排序数组的前十个元素。
到目前为止,这是我的代码:
public class Lab_10_3 {
public static void main(String[] args) {
int myRandomArray1[] = new int[10];
int myRandomArray2[] = new int[1000];
int myRandomArray3[] = new int[1000000];
count(myRandomArray1);
printOriginal(myRandomArray1);
selectionSort(myRandomArray1);
printArray(myRandomArray1);
count(myRandomArray2);
printOriginal(myRandomArray2);
selectionSort(myRandomArray2);
printArray(myRandomArray2);
count(myRandomArray3);
printOriginal(myRandomArray3);
selectionSort(myRandomArray3);
printArray(myRandomArray3);
}
public static void count(int[] value) {
System.out.println("The original order is: ");
for (int i = 0; i < 10; i++) {
value[i] = (int) (Math.random() * 10);
}
}
public static void selectionSort(int[] array) {
int startScan, index, minIndex, minValue;
for (startScan = 0; startScan < (array.length - 1); startScan++) {
minIndex = startScan;
minValue = array[startScan];
for (index = startScan + 1; index < array.length; index++) {
if (array[index] < minValue) {
minValue = array[index];
minIndex = index;
}
}
array[minIndex] = array[startScan];
array[startScan] = minValue;
}
}
public static void printArray(int[] value) {
System.out.println("The sorted values are:");
for (int i = 0; i < 10; i++)
System.out.print(value[i] + " ");
System.out.println();
}
public static void printOriginal(int[] value) {
for (int j = 0; j < 10; j++) {
System.out.println(value[j]);
}
}
}
由于某种原因,我的 randomArray3 (1,000,000) 不会打印它的排序值,我不知道为什么......(我对 Java 还是很陌生,我真的很想知道如何以及为什么这样做不工作,所以我可以纠正自己并学习。)
提前致谢!
【问题讨论】:
-
它“不会打印”是怎么回事?程序会崩溃吗?你有堆栈跟踪吗?还是只是默默地失败了?
-
不是不会打印。你的排序很慢,需要很长时间。放一些日志语句来验证。
-
选择排序是 O(n^2),因此程序更有可能只需要很长时间才能运行 1,000,000,000,000 次操作。我的建议:不要使用选择排序,但如果你需要某种学校作业,不要让它对一百万个项目进行排序。
-
您只需要在数组中插入十个值!其他的都是
0。而count是该方法的糟糕名称。 -
和一百万 (1,000,000) 个随机整数的数组,这不是真的,对于您的
count方法,您只需初始化前 10 个变量,因此您的排序长度应该是10
标签: java arrays sorting random