选择排序:
选择排序在开始的时候,先扫描整个列表,以找到列表中的最小元素,然后将这个元素与第一个元素进行交换。这样最小元素就放到它的最终位置上。然后,从第二个元素开始扫描,找到n-1个元素中的最小元素,然后再与第二个元素进行交换。以此类推,直到第n-1个元素(如果前n-1个元素都已在最终位置,则最后一个元素也将在最终位置上)。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int tmp;
int n = in.nextInt();
int[] arr = new int[n];
System.out.println();
for (int i = 0; i < arr.length - 1; i++) {
int index = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[index]) {
index = j;
}
tmp = arr[i];
arr[i] = arr[index];
arr[index] = tmp;
}
}
System.out.println();
System.out.println(Arrays.toString(arr));
}
}
没有输入数组的值呀,默认都是0,可以参考下这个
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
for (int i = 0; i < arr.length ; i++) {
arr[i]=in.nextInt();
}
for (int i = 0; i < (arr.length - 1); i++) {
//先假设每次循环时,最小数的索引为i
int minIndex = i;
//每一个元素都和剩下的未排序的元素比较
int count =0;
for (int j = i + 1; j < arr.length; j++) {
count++;
if (arr[j] < arr[minIndex]) { //寻找最小数
minIndex = j; //将最小数的索引保存
}
}
//经过一轮循环,就可以找出第一个最小值的索引,然后把最小值放到i的位置
swap(arr, i, minIndex);
}
System.out.println(Arrays.toString(arr));
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
你的arr数组都没赋值啊