选择法就是按每一位应该是什么就是什么。
语言不是问题!
流程图我就用文字画,你自己图形化吧。
大概就是
1、初始化i=0;
2、判断i<n,是至3,否至6;
3、判断a[i]是不是在i-n-1中最大的?是,走5,不是走4
4、往后比较,与最大的进行交换,使得a[i]是在i-n中最大;
5、i++,调至2;
6、结束,输出结果。
参考代码:
import java.util.Scanner;
public class Main
{
private Scanner in = new Scanner(System.in);
private int n, a[];
private void input(){
n = in.nextInt();//输入数组个数
a=new int [n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
}
private void sort(){
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;//假设x[i]最大,记为x[k]
for(j=i+1;j<n;j++){
if(a[k]<a[j])//如果有比x[k]大的数,记该数为最大的数x[k]
k=j;
}
if(k!=i)//一轮比完后,若x[k]发生了变化,说明有比x[i]大的数在后面。
{
t=a[i];
a[i]=a[k];
a[k]=t;//交换x[i]后面所有数中最大的那个,使x[i]是其后所有元素中最大的。
}
}
}
private void printa(){
for(int i=0;i<n;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
Main a = new Main();
a.input();
a.sort();
a.printa();
}
}