优化以下代码降低时间复杂度import java.util.Scanner; public class 冒泡排序 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int []arr=new int [7]; for(int i=0;i<7;i++){ arr[i]=in.nextInt(); } for(int i=0;i<7;i++){ for(int j=i+1;j<7;j++){ if(arr[i]>arr[j]){ int temo=arr[i]; arr[i]=arr[j]; arr[j]=temo; } } } for(int i=0;i<7;i++) System.out.print(arr[i]+" "); } }
时间: 2024-04-11 16:27:39 浏览: 104
该代码使用了冒泡排序算法对输入的数组进行排序。冒泡排序的时间复杂度为O(n^2),在大规模数据的情况下效率较低。以下是对代码进行优化的建议:
1. 使用常量或变量代替魔法数:将代码中的7替换为一个常量或变量,以提高代码的可读性和灵活性。
2. 减少比较次数:在每一轮比较中,如果没有发生交换,则说明数组已经有序,可以提前结束排序。
3. 减少循环次数:每一轮冒泡排序都会将当前最大的元素移动到数组的最后,所以下一轮循环时可以减少一次比较。
4. 使用增强for循环:可以使用增强for循环来遍历数组,简化代码。
下面是优化后的代码示例:
```java
import java.util.Scanner;
public class 冒泡排序优化 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
final int SIZE = 7; // 数组大小
int[] arr = new int[SIZE];
for (int i = 0; i < SIZE; i++) {
arr[i] = in.nextInt();
}
boolean isSorted = false; // 判断是否有序
for (int i = 0; i < SIZE - 1 && !isSorted; i++) {
isSorted = true;
for (int j = 0; j < SIZE - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
isSorted = false;
}
}
}
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
通过以上优化,可以减少不必要的比较和交换次数,提高冒泡排序算法的效率。但需要注意,冒泡排序在最坏情况下的时间复杂度仍然为O(n^2),对于大规模数据的排序,推荐使用更高效的排序算法,如快速排序、归并排序等。
阅读全文