我找不到将数组内部格式化到小数点后一位的有效方法。
然后,在代码结尾处,我有一个秒表问题,以跟踪根据数组大小处理冒泡排序需要多长时间。
import java.util.Arrays;
import java.util.Random;
public class BubbleSortTest {
public static void sort(double arr[]) {
int arrayLength = arr.length;
for (int i = 0; i < arrayLength-1; i++) {
for (int j = 0; j < arrayLength-i-1; j++) {
if (arr[j] > arr[j+1]) {
//swap temp and arr[i]
double temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
/* Prints the array */
public static void printArray(double arr[]) {
int arrayLength = arr.length;
for (int i = 0; i < arrayLength; ++i) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static void generateDoubleArray(double arr[], int length) {
//generating random values
Random rand = new Random();
for(int i = 0; i < length; i++) {
arr[i] = (rand.nextDouble() * (100 - 0)) + 0;
}
}
public static void main(String args[]) {
BubbleSortTest ob = new BubbleSortTest();
int length = 3; //change the length according to requirement
double arr[] = new double[length]; // Ex) {6.1, 4.2, 3.3, 7.4, 5.5, 2.6, 8.7, 1.8};
BubbleSortTest.generateDoubleArray(arr, length);
System.out.println("BEFORE BUBBLE SORT: "+ Arrays.toString(arr));
BubbleSortTest.sort(arr);
System.out.println("AFTER BUBBLE SORT: "+ Arrays.toString(arr));
StopWatch s = new StopWatch();
double[] a;
for(int i = 1; i <= 10; i++) {
a = BubbleSortTest.generateDoubleArray(i * 20000, i*30000);
s.start();
sort(a);
s.stop();
System.out.println("Size: " + i*1000 + "\t\tTime: " +s.elapsedTime());
}
}
// Size: 1000 Time: 0.0
// Size: 2000 Time: 0.0
// Size: 3000 Time: 0.0
// Size: 4000 Time: 0.0
// Size: 5000 Time: 0.0
// Size: 6000 Time: 0.0
// Size: 7000 Time: 0.0
// Size: 8000 Time: 0.0
// Size: 9000 Time: 0.0
// Size: 10000 Time: 0.0
// Output with length of array = 3
// BEFORE BUBBLE SORT: [56.24793454034215, 1.3614871074902335,17.853054450932547]
//AFTER BUBBLE SORT: [1.3614871074902335,17.853054450932547,56.24793454034215]
答案 0 :(得分:0)
因此,您没有调用printArray方法...
没有一种在数字数组中格式化双精度格式的方法。如果要使用Arrays.toString
如果使用自己的方法,则可以在Best way to Format a Double value to 2 Decimal places上查看几种解决方案
关于错误,尚不清楚您期望generateDoubleArray(i * 20000, i*30000);
做什么,但是第一个参数必须是双精度数组,而不是数字,并且该方法本身不返回任何内容,因此您不会不能做a = BubbleSortTest.generateDoubleArray
也许您想要这样的东西
static Random rand = new Random();
public static double[] generateDoubleArray(int length){
double arr[] = new double[length];
for(int i = 0; i<length;i++) {
//generating random values
arr[i] = rand.nextDouble() * 100;
}
return arr;
}
除此之外,输出中的("Size: " + i*1000 +
与您要创建的length参数相距很远