逆序排列:每次从序列中选择最大的元素放在第i个位置(已排好序的元素的后面)。
import java.util.Scanner;
public class SelectSort {
public static void main(String[] args){
int n;
Scanner s=new Scanner(System.in);
n=s.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=s.nextInt();
}
int max_index;
int max;
int temp;
for(int i=0;i<n;i++){
max_index=i;
max=a[max_index];
for(int j=i+1;j<n;j++){//选择出最大的
if(max<a[j]){
temp=a[j];
a[j]=max;
max=temp;
}
}
temp=a[i];
a[i]=max;
max=temp;
}
for(int i=0;i<n;i++){
System.out.print(a[i]+" ");
}
}
}
根据大O法则,最坏情况下,时间复杂度为O(n^2)。