简述
选择排序是一种简单的排序算法,其流程如下:
①找到数组中最小的一个元素
②将它和数组的第一个元素交换
③在剩下的元素中找到最小的元素
④将它和数组的第二个元素作交换
接下来如此往复,直到将整个数组都有序排列
例子
接下来我们看一个具体的例子:
使用选择排序将数组{S, O, R ,T ,E , X, A, M, P, L, E}有序排列
Tips:i表示排序次数 min表示最小的元素的下标
i min 0 1 2 3 4 5 6 7 8 9 10
S O R T E X A M P L E
0 6 S O R T E X A M P L E
1 4 A O R T E X S M P L E
2 10 A E R T O X S M P L E
3 9 A E E T O X S M P L R
4 7 A E E L O X S M P T R
5 7 A E E L M X S O P T R
6 8 A E E L M O S X P T R
7 10 A E E L M O P X S T R
8 8 A E E L M O P R S T X
9 9 A E E L M O P R S T X
10 10 A E E L M O P R S T X
———————————————————————————
排序完成:A E E L M O P R S T X
代码展示
package Sort;
import java.util.*;
public class Selection_Sort {
//选择排序
public static void sort(Comparable[] a) {
int N = a.length;
for (int i = 0; i < N; i++) {
//将a[i]和a[i+1]到a[N]中的最小元素作交换
int min = i;
for (int j = i+1; j<N; j++) {
if ( a[j].compareTo(a[min]) < 0 )//如果a[j]<a[min]
min = j;
}
//将a[i]和a[min]调换位置
Comparable t = a[i];
a[i] = a[min];
a[min] = t;
}
}
//用于打印展示数组的方法
private static void show(Comparable[] a) {
for (int i = 0; i<a.length; i++)
System.out.print(a[i]+" ");
System.out.println();
}
//用例
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
String in = reader.nextLine();
String[] a = in.split(" ");
sort(a);//调用上面的选择排序方法
show(a);
}
}
输入输出结果
输入:
22 33 44 11 66 55 88 77
输出:
11 22 33 44 55 66 77 88