编程实例
package step5;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//动态创建数组
int n = sc.nextInt();
int[] arr = new int[n];
for(int i = 0 ; i< n ; i++){
arr[i] = sc.nextInt();
}
// 冒泡排序
boolean swapped;
for (int i = 0; i < n-1; i++) {
swapped = false; //用于判断数组元素是否还有发生判断
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// 交换 arr[j] 和 arr[j+1]
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
swapped = true;
}
}
if (!swapped) {
break; // 如果没有发生交换,则数组已经有序
}
}
System.out.println(Arrays.toString(arr));
}
}
解释:
任务是从客户端输入一串数组给数组arr[]
,然后对该数组进行升序排列。本代码使用了冒泡排序的方式,即数组相邻的元素两两比较,符合if
条件的则相互交互位置,直到完成升序排列为止。其中为了节省开销,使用了数组的内方法Arrays.toString(arr)
直接输出数组,在for
循环中用了一个布尔变量swapped
来判读数组的元素是否还有交换,若没有变化则排序已经完成,跳出冗余的循环。