本关任务:使用直接选择排序(按升序)对给定的数组排序,并输出每次排序结果以及排序完成后的数组。
思路:
1、输入数组长度
2、输入待排序数组
3、第一层循环:找到数组长度-1个下标,并且设置一个变量min接受最小值下标
4、第二层循环:将第一层循环每个下标与其下一个小标所表示的数组数比较,若有最小值,将该数下标赋给min,并进行交换,打印。
具体细节见代码:
import java.util.Scanner;
import java.util.Arrays;
public class SortTest {
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();
}
for (int i = 0; i < arr.length - 1;i++){ // i可取0 1 2 3 ... arr.length - 1
int min = i; // 当i取到arr.length-1时j=arr.length不满足for循环条件,所以这里会出现 min = i 的时候,不能打印
for (int j = i + 1; j < arr.length; j++){ // j 可