选择排序
方法一
public class SelectSort {
//定义一个数组
//从控制台获取数组元素
//遍历数组
//找到最小值
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//直接读一行 以空格割成各个元素,存入数组inputString
String[] inputString=sc.nextLine().split(" ");
int[] arr = new int[inputString.length];
for (int i = 0;i<=inputString.length-1;i++){
arr[i] = Integer.parseInt(inputString[i]);
System.out.print(arr[i]+" ");
}
System.out.println();
selectsort(arr);
}
private static void selectsort(int[] arr) {
for (int j=0;j<arr.length-1;j++){
int min=j;
for (int k =j+1;k<arr.length;k++){
if (arr[k]<arr[min]){
min = k;
}
}
if (j!=min){
int temp =arr[j];//存默认的最小值
arr[j]=arr[min];//更新最小值
arr[min]=temp;//重新存最小值
}
}
for (int i =0;i<=arr.length-1;i++){
System.out.print(arr[i]+" ");
}
}
}
方法二
与方法一不同的是,获取数组是调用函数,这样让主函数看着更简洁
public class SelectSort2 {
public static void main(String[] args) {
int[] arr = getArr();
selectsort(arr);
}
private static int[] getArr() {
Scanner sc = new Scanner(System.in);
//直接读一行 以空格割成各个元素,存入数组inputString
String[] inputString=sc.nextLine().split(" ");
int[] arr = new int[inputString.length];
for (int i = 0;i<=inputString.length-1;i++){
arr[i] = Integer.parseInt(inputString[i]);
System.out.print(arr[i]+" ");
}
System.out.println();
return arr;
}
private static void selectsort(int[] arr) {
for (int j=0;j<arr.length-1;j++){
int min=j;
for (int k =j+1;k<arr.length;k++){
if (arr[k]<arr[min]){
min = k;
}
}
if (j!=min){
int temp =arr[j];//存默认的最小值
arr[j]=arr[min];//更新最小值
arr[min]=temp;//重新存最小值
}
}
for (int i =0;i<=arr.length-1;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
方法三
//在方法二的基础上使用家了一个控制语句,数组第一个元素为0时,将会结束循环,不能持续排序
public class SelectSort {
public static int a=0;
public static void main(String[] args) {
// do{
// int[] arr = getArr();
// selectsort(arr);
// }while (a==0);
while (true){
int[] arr = getArr();
if (a==1){
break;
}
selectsort(arr);
}
}
private static int[] getArr() {
Scanner sc = new Scanner(System.in);
int arr2 []=new int[0];
//直接读一行 以空格割成各个元素,存入数组inputString
String[] inputString=sc.nextLine().split(" ");
int[] arr = new int[inputString.length];
for (int i = 0;i<=inputString.length-1;i++){
arr[i] = Integer.parseInt(inputString[i]);
System.out.print(arr[i]+" ");
}
System.out.println();
if (arr[0]==0){
a=1;
System.out.println("结束了");
return arr2;
}else {
return arr;
}
}
private static void selectsort(int[] arr) {
for (int j=0;j<arr.length-1;j++){
int min=j;
for (int k =j+1;k<arr.length;k++){
if (arr[k]<arr[min]){
min = k;
}
}
if (j!=min){
int temp =arr[j];//存默认的最小值
arr[j]=arr[min];//更新最小值
arr[min]=temp;//重新存最小值
}
}
for (int i =0;i<=arr.length-1;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
}