递归简单排序我做了50分钟,太衰了。
多练多思考,希望能有所改变。
一分辛苦一分才,勤能补拙是良训。
递归选择排序方法,第i个和第i个后面的元素进行比较,找到比a[i]小的元素下标,
循环结束,进行交换。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
//使用递归简单选择排序
public static int[]a;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
a=new int[n];
for (int i = 0; i <n; i++) {
a[i]=sc.nextInt();
}
selectsort(0, a.length);
for (int item : a) {
System.out.print(item+"");
}
}
public static void selectsort(int i,int n) {//i:当前的索引,n:数组长度
int mink=i;//大于i的最小元素索引
if (i==n) {
return;
}else {
for (int j = i; j <n; j++) {
if (a[j]<a[mink]) {
mink=j;//大于i的最小元素索引改变
}
}
int t=a[i];
a[i]=a[mink];
a[mink]=t;
}
selectsort(i+1,n);
}
}
------
例题
题解:
import java.util.Arrays;
import java.util.Scanner;
public class Main61 {
//使用递归简单选择排序
public static int[]a;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
a=new int[n];
for (int i = 0; i <n; i++) {
a[i]=sc.nextInt();
}
selectsort(0, a.length);
}
public static void selectsort(int i,int n) {//i:当前的索引,n:数组长度
int mink=i;//大于i的最小元素索引
if (i==n) {
return;
}else {
for (int j = i; j <n; j++) {
if (a[j]<a[mink]) {
mink=j;//大于i的最小元素索引改变
}
}
int t=a[i];
a[i]=a[mink];
a[mink]=t;
//输出
System.out.print("swap(a["+i+"], a["+mink+"]):");
for (int item : a) {
System.out.print(item+" ");
}
System.out.println();
}
selectsort(i+1,n);
}
}