Java编写:根据从键盘输入的数据,分别对前100、前1000及全部数据分别使用冒泡排序和Java的Qsort进行排序,并计时。
时间: 2024-09-08 09:03:40 浏览: 59
java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
在Java中实现冒泡排序和Java自带的Qsort(即Arrays.sort())排序方法,并计算不同数据集大小下的排序时间,可以通过以下步骤来完成:
1. 创建一个程序,它可以接收用户输入的数据,并将其存储在数组中。
2. 实现冒泡排序算法对数组进行排序,并记录排序所需时间。
3. 使用Java内置的Arrays.sort()方法对数组进行排序,并记录排序所需时间。
4. 重复步骤2和步骤3,分别对前100个元素、前1000个元素以及全部数据进行排序和计时。
下面是一个简单的实现示例:
```java
import java.util.Arrays;
import java.util.Scanner;
import java.util.Random;
public class SortBenchmark {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据个数:");
int n = scanner.nextInt();
int[] numbers = new int[n];
// 生成随机数据并输入到数组中
Random random = new Random();
for (int i = 0; i < n; i++) {
numbers[i] = random.nextInt();
}
// 分别对前100、前1000及全部数据进行冒泡排序和Arrays.sort()排序,并计算时间
for (int limit : new int[]{100, 1000, n}) {
// 对数组的前limit个元素进行操作
int[] slice = Arrays.copyOf(numbers, Math.min(limit, n));
// 冒泡排序
long startTime = System.nanoTime();
bubbleSort(slice);
long endTime = System.nanoTime();
System.out.println("冒泡排序耗时:" + (endTime - startTime) + "纳秒");
// Arrays.sort()排序
startTime = System.nanoTime();
Arrays.sort(slice);
endTime = System.nanoTime();
System.out.println("Arrays.sort()排序耗时:" + (endTime - startTime) + "纳秒");
}
}
// 冒泡排序算法实现
public static void bubbleSort(int[] array) {
boolean swapped;
for (int i = 0; i < array.length - 1; i++) {
swapped = false;
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
// 交换元素
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swapped = true;
}
}
// 如果没有发生交换,则数组已经排序完成
if (!swapped) {
break;
}
}
}
}
```
在上述代码中,我们首先创建了一个Scanner对象来获取用户输入的数据个数。然后生成一个随机整数数组,并且分别对数组的前100个、前1000个和全部元素执行冒泡排序和Arrays.sort()排序。每种排序后,我们都记录了排序操作的时间(以纳秒为单位)。
请注意,实际的计时可能受到多种因素的影响,如CPU负载、JVM优化等,因此给出的时间仅是一个大概的参考值。
阅读全文