算法
选择排序与冒泡排序一样都是最朴素简单而又经典的排序算法,效率相对快速排序、堆排序等较低。其思路是,一共进行n-1趟排序,每次筛选出最大(降序)或者最小(升序)的元素,将该元素与位置为i的元素进行交换(i表示趟数),当第n-1趟结束时,排序完成。由n-1趟,每趟比较n-i次,容易得出其时间复杂度为o(n*n),效率确实比较低下。
Codes
package com.fairy.InnerSort;
import java.util.Scanner;
/**
* 选择排序
* @author Fairy2016
*
*/
public class SelectSort {
public static void sort(int a[], int n) {
int min;//记录每趟查找的最小元素位置
for(int i = 1; i <= n-1; i++) {
min = i;
//寻找第i趟的最小元素
for(int j = i+1; j <= n; j++) {
if(a[min] > a[j]) {
min = j;
}
}
//交换a[min]与a[i],完成一趟排序
a[0] = a[min];
a[min] = a[i];
a[i] = a[0];
}
}
public static void Print(int a[], int n) {
for(int i = 1; i <= n; i++) {
System.out.print(a[i]+" ");
}
}
public static void main(String args[]) {
int n;
int a[];
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
n = scanner.nextInt();
if(n > 0) {
a = new int[n+1];
for(int i=1; i <= n; i++) {
a[i] = scanner.nextInt();
}
sort(a, n);
Print(a, n);
}
}
scanner.close();
}
}